999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向容器的云平臺數據重分布策略研究*

2017-01-12 10:20:04丁璽潤
網絡安全與數據管理 2016年5期
關鍵詞:數據庫實驗

丁璽潤, 陳 梅, 李 暉

(1.貴州大學 計算機科學與技術學院,貴州 貴陽 550025;2.貴州大學 貴州省先進計算與醫療信息服務工程實驗室,貴州 貴陽 550025)

面向容器的云平臺數據重分布策略研究*

丁璽潤1,2, 陳 梅1,2, 李 暉1,2

(1.貴州大學 計算機科學與技術學院,貴州 貴陽 550025;
2.貴州大學 貴州省先進計算與醫療信息服務工程實驗室,貴州 貴陽 550025)

隨著Docker等的問世,基于容器的操作系統級虛擬化技術受到云計算廠商的廣泛關注。針對云平臺上不同應用領域的數據庫容器(面向事務型任務的數據庫容器與面向分析型任務的數據庫容器)在運行時對宿主機資源需求的差異,提出一種面向容器的數據重分布策略,用于優化容器中數據庫服務的性能。實驗結果表明,該策略達到了預期效果,可以有效提升容器中數據庫服務的性能。

云計算;虛擬化;數據庫;容器;數據重分布

0 引言

以Docker為代表的Linux容器技術為云平臺提供了更輕量級的虛擬化解決方案。Linux容器技術是一種內核虛擬化技術(即操作系統級虛擬化技術),它提供了輕量級的虛擬化解決方案。可以在一臺主機上通過隔離進程和資源,同時提供多個虛擬環境(即容器)。每個容器都擁有自己的進程和獨立的網絡空間。從用戶角度看,一個運行的容器與一臺運行的主機無異。

基于容器的虛擬化技術通過隔離操作系統的對象,例如PID、UID、系統共享內存、IPC等,實現對不同容器提供不同的系統視圖,并且通過Cgroups和Namespace技術實現。Linux容器技術在資源管理方面依賴于Linux內核的Cgroups,它是Linux內核提供的一個基于進程組的資源管理框架,為特定的進程組限定可以使用的資源。Linux在隔離控制方面依賴于Linux內核的Namespace,即將原來的全局對象隔離到不同的Namespace里,不同容器之間不可見。

目前,應用廣泛的虛擬化技術包括以VMWare和微軟的Virtual PC為代表的全虛擬化技術以及以Xen為代表的半虛擬化技術。與上述技術相比,容器級虛擬化可以直接運行CPU指令,避免全虛擬化指令級模擬或即時編譯造成的系統開銷,同時也避免了半虛擬化和系統調用替換的復雜操作。因此,容器級虛擬化技術比傳統虛擬化技術具有更輕量級,但是容器技術強制所有容器必須使用與宿主機相同的內核。

文獻[1-2]指出,運行在云平臺上的服務,例如Web服務,容易受到網絡帶寬、CPU、內存的影響,導致其服務質量降低。傳統的解決方案是遷移云平臺上運行該服務的虛擬機到其他節點,即Virtual-to-Virtual。云平臺上面向容器的數據重分布技術與其類似,通過遷移一臺宿主機的容器及其數據卷到另一臺宿主機,以解決容器中服務的性能問題。本文針對云平臺上數據庫容器,設計并實現了LXCDDS,一種云平臺上面向容器的數據重分布策略,用于提升云平臺上Linux容器中不同類型任務(事務型和分析型)的數據庫服務的性能。

1 相關工作

1.1 Docker

Linux容器技術(Linux Containers,LXC)起源于1982年,由于操作復雜和維護困難等原因一直沒有得到廣泛應用,直到Docker的出現,Linux容器技術再次受到業界認可。Docker是dotCloud公司發起的一個開源項目。它始于2013年初,采用Go語言實現,以Linux容器技術為基礎,目標是“Build, Ship, Run”,即“一次部署,多處運行”。文獻[3-4]中指出,對于開發和運維人員來說,最希望的是一次創建或配置,在任意環境中運行。Docker的出現使之成為可能。同時,基于操作系統級虛擬化技術實現的Docker,比傳統的虛擬機技術更輕量化,更易于遷移和擴展。因此,本文采用Docker作為Linux容器技術的一種實現。

1.2 Flocker

本文采用Flocker作為容器中的數據遷移工具。Flocker是ClusterHQ公司的開源項目,它提供了容器數據卷管理以及多主機Docker集群管理功能。數據卷是一個可供一個或多個容器使用的特殊目錄,它繞過UFS,可以在容器之間共享和重用。Docker容器的數據卷可以用來存儲容器中的數據,一旦Docker容器由于某種原因宕機,可以通過相應的數據卷恢復容器中的數據,因此,常用在提供數據庫服務的容器中。

Docker容器的數據卷只能綁定在一臺Docker宿主機上,不能遷移到集群中的其他節點。Flocker中的數據卷也稱作數據集(dataset),它可以隨著容器遷移到集群中的任何節點。Flocker項目的核心是Control Service,它提供一個簡單的REST API,Flocker Control Service使用Flocker API管理集群中的節點,通過Flocker API,開發人員可以在多主機集群中部署多容器應用,在集群中遷移容器及其數據卷。目前,Docker官方正在測試Flocker項目,并計劃將其作為未來Docker數據卷管理工具。

2 容器級數據重分布策略的設計與實現

2.1 容器級數據重分布策略的設計

在Linux容器中可以運行各種應用服務,其中數據庫服務是最常見的也是最重要的應用服務,因此,本文重點研究如何提升Linux容器中數據庫服務的性能。

數據庫服務按照應用領域可以劃分為面向事務型任務的數據庫(即OLTP型數據庫)和面向分析型任務的數據庫(即OLAP型數據庫)。本文研發的容器級數據重分布策略旨在將這兩種類型的數據庫容器重新分配到集群中的不同節點,并且通過調整節點的系統配置,分別提升這兩種類型的數據庫服務的性能。

如圖1所示,假設云平臺上運行Linux容器的集群中有兩個節點Node 1和Node 2,在這兩個節點上分別運行著幾個Linux容器,其中T代表OLTP型數據庫容器,A代表OLAP型數據庫容器。容器級數據重分布策略的本質是將這兩種執行不同任務的數據庫容器轉移到各自的節點上,讓同一種任務類型的數據庫容器運行在同一臺節點或同一集群上,即將T類型容器全部遷移到Node 1節點中,A類型容器全部遷移到Node 2節點中,最終狀態如圖2所示。

圖1 兩種類型的數據庫容器在集群節點中的分布

圖2 數據遷移后集群節點中數據庫容器的分布

從并發角度分析:對于OLTP型數據庫服務[5-6],執行I/O操作比CPU計算操作占用更多CPU時間片。該服務的線程負責阻塞I/O,當某一線程因為I/O阻塞進入阻塞狀態后,該線程的調度被操作系統內核停止,不再占用CPU時間片段。而其他I/O線程立即被操作系統內核調度,待I/O阻塞操作完成,原來阻塞狀態的線程重新變成就緒狀態時,可以被操作系統調度。因此,理論上,為圖2中Node 1的所有容器進程設置更多的I/O密集型線程可以提升該節點中OLTP型數據庫服務的效率。

相反,對于OLAP型數據庫服務,CPU需要執行大量的連接、聚集操作,而對于這種計算密集型任務,進程中的線程越多,導致進程內每個線程的執行時間越短,從而影響數據分析效率。因此,理論上,為圖2中Node 2的所有容器進程設置更少的計算密集型線程可以提升該節點中OLAP型數據庫服務的效率。

綜上所述,該容器級數據重分布策略從理論上可以提升Linux容器中數據庫服務的性能。此外,出于簡化運維和業務管理的需要,在同一數據中心中,通常也更希望將同類型業務部署在物理位置更靠近的集群節點中。

2.2 容器級數據重分布策略的實現

在實際應用中有兩種情況造成圖1所示的不同類型的容器不均勻地分布在不同節點上。第一種情況,在數據庫容器運行前,運維人員不清楚或未對數據庫容器執行的任務類型進行分類,因此,導致面向事務型和面向分析型任務的數據庫容器隨機地分布到不同節點中。第二種情況,運維人員已經對數據庫容器執行的任務進行分類,但由于運行同一類任務的容器的宿主機資源不足,不能讓待運行的容器在這臺節點上運行,而運行另一類任務的容器的宿主機可以滿足這個容器的運行條件,因此它將運行在與自己不同任務類型的容器的宿主機上。

例如,如圖2所示,T類型任務運行在Node 1上,A類型任務運行在Node 2上,此時有1個T類型任務容器待運行,恰好Node 1不能提供它運行所需的資源,而Node 2可以滿足這個容器運行的條件,因此這個新的T類型任務的容器被部署在Node 2上。經過一段時間,兩個宿主機中就會同時運行多種類型的容器。

對于第一種情況,不確定節點中運行的容器哪些是T類型哪些是A類型。由于每個正在運行的數據庫容器都有一個通過容器ID與它綁定的數據卷,該數據卷中存儲了該數據庫的數據、日志信息以及配置信息,通過解析該數據庫的日志信息,可以確定其執行更新操作和查詢操作數目的比例,以及執行更新操作和查詢操作消耗的時間。執行事務型任務的數據庫,其更新操作頻繁,日志中更新操作的比例很高,且執行查詢操作消耗的時間較短。反之,執行分析型任務的數據庫,其更新操作非常少,但是由于其經常做復雜分析操作,需要執行大量JOIN操作和聚集操作,查詢執行時間較長。因此,可以確定節點中的容器哪些是T類型哪些是A類型。

2.3 分布式環境下容器級數據重分布算法

算法1為分布式環境下容器級數據重分布算法。該算法核心思想:首先,確定節點Node中每一個數據庫容器的類型Type;然后,對于不符合本節點容器類型的數據庫容器,將其加入到待遷移隊列MoveList中;最后,找到待遷移的目標節點TargetNode,判斷其是否有足夠資源運行該容器,如果條件滿足,則通過Flocker完成容器遷移,否則等待資源。算法代碼描述如下:

算法1DataDistributionAlgorithm輸入:NodeID,TargetNodeID,TypeNode,MoveList輸出:NULL1:whiletruedo2: ifHasNewContainers()=truethen3: foreachcinListContainers(NodeID)do4: TypeContainer(GetContainType(c);5: ifTypeContainer=TypeNodethen6: else7: ifIfNodeInList(c)=falsethen8: AddMoveList(c,MoveList);9: endif10: endif11: endfor12: endif13: while(HasElmts(MoveList)=trueandHasRes(TargetNodeID)=true)do14: e(GetNextContainer(MoveList);15: DataMovement(e);16: RmFromMoveList(e,MoveList);17: endwhile18:endwhile

3 實驗結果與分析

3.1 實驗環境及實驗方案

本實驗使用的硬件及系統配置見表1。實驗中使用的數據庫容器是DockerHub提供的PostgreSQL9.4.4官方鏡像,其配置為shared_buffers=128 MB,其他參數為PostgreSQL系統默認參數。實驗使用標準的TPC-H benchmark對OLAP型數據庫的數據分析性能進行測試,總數據量為1 GB。本實驗同時使用標準的TPC-C benchmark對OLTP型數據庫的事務性能進行測試。

表1 硬件及系統配置信息表

實驗一和實驗二的實驗過程相同。首先,初始狀態時兩個節點中分別運行3個OLTP型PostgreSQL容器和3個OLAP型PostgreSQL容器,對其中的1個OLTP型PostgreSQL容器進行TPC-C benchmark測試,同時對1個OLAP型PostgreSQL容器進行TPC-H benchmark測試,得到實驗結果。然后,采用容器級數據重分布策略將OTLP型數據庫和OLAP型數據庫分離,使得其中一個節點上運行6個OLTP型PostgreSQL容器,另一個節點上運行6個OLAP型PostgreSQL容器,分別對OLTP型PostgreSQL容器進行TPC-C benchmark測試,對OLAP型PostgreSQL容器進行TPC-H benchmark測試,得到實驗結果。最后分別測試節點中僅運行1個數據庫容器時的OLTP性能和OLAP性能作為參考,得到對此結果。

3.2 實驗結果分析

實驗一的結果如圖3、圖4所示。圖3中顯示了執行容器級數據重分布前后數據庫事務的性能對比結果。圖3的橫坐標為測試的數據倉庫個數,每個數據倉庫中有10個測試終端(Terminal);縱坐標為tpmC(數據庫每分鐘處理事務數),tpmC的值越高,則數據庫的OLTP性能越好。從圖3中可以看出,節點中僅運行一個OLTP型數據庫容器時,它的事務性最好,因為節點中沒有其他容器與其競爭CPU等資源,本實驗用其作為性能參考標準。數據重分布后容器中數據庫的事務性能排在其后,因為數據重分布前節點中還有3個OLAP型數據庫容器在執行復雜的表連接和聚集操作,占用整個節點的大量CPU時間片,導致CPU處理I/O操作的等待時間增加,所以執行復雜分析操作的數據庫容器會影響OLTP型數據庫容器的更新操作性能,導致事務性能下降。因此,執行容器級數據重分布有利于提升事務型數據庫容器的性能。

圖3 實驗一(a)數據重分布前后TPC-C測試結果

圖4中顯示了容器級數據重分布前后數據庫分析性能對比結果。圖4中橫坐標為執行TPC-H測試的22條SQL語句,其中Q17和Q20包含了復雜的嵌套查詢以及聚集操作,且由于postgresql的shared_buffers大小設置為128 MB,導致這兩條語句的執行時間是其他語句執行時間的幾千倍,因此不作為本實驗的參考。

從圖4中可以看到,數據重分布后數據庫的分析性能下降很明顯,查詢語句響應時間比數據重分布前的響應時間長很多。通過監控節點的CPU和內存發現,由于本實驗使用的CPU為4核,內存8 GB,數據重分布前節點共執行3個OLTP型數據庫容器和3個OLAP型容器,CPU使用率達到70%~90%,內存使用7.27 GB,而數據重分布后執行6個OLAP任務,該節點上的CPU使用率達到100%,內存使用7.48 GB,這說明執行OLAP型任務的數據庫容器會消耗大量 CPU時間片,而此時CPU使用率已經達到飽和,因此數據庫的OLAP性能急劇下降。實驗證明,當宿主機系統資源不足時會嚴重影響宿主機中容器的執行效率,因此在宿主機資源不足時,應該執行容器數據遷移,但如果待遷移目標主機的資源不足,則待遷移的容器應該等待,以免由于資源競爭引起容器性能降低。

圖4 實驗一(b)數據重分布前后TPC-H測試結果

圖5 實驗二(a)數據重分布前后數據庫分析性能對比結果

實驗二在實驗一基礎上將CPU增加到8核,來測試容器中數據庫的OLTP和OLAP性能。實驗結果如圖5和圖6所示。圖5表明,節點中CPU和內存充足時,數據重分布后的數據庫的OLAP性能普遍比數據重分布前性能好,其原因如下:

圖6 實驗二(b)數據重分布前后數據庫事務性能對比結果

數據重分布前,執行OLTP任務的容器頻繁占用宿主機的CPU時間片來處理I/O請求,導致執行OLAP型數據庫容器的CPU等待時間增加。因此,數據重分布后的數據庫的分析性能比數據重分布前要好。圖6為數據重分布前后數據庫事務性能對比。實驗結果表明執行容器級數據重分布后數據庫事務性能好,具體原因圖3中同實驗一(a)。

4 結論

Docker技術的出現給Linux容器技術帶來巨大的發展前景,同時也促進了云服務技術的發展與應用。本文針對如何提升運行在云計算平臺容器中的執行事務型任務和分析型任務的數據庫服務的性能提出了容器級數據重分布策略LXCDDS。實驗結果表明,該數據重分布策略能夠有效提升云平臺上容器中數據庫服務的性能。

[1] Wei Hao, YEN I L,THURAISINGHA M B. Dynamic service and data migration in the clouds[C]. IEEE COMPSAC, 2009:134-136.

[2] 石杰.云計算環境下的數據挖掘應用[J].微型機與應用,2015,34(5):13-15.

[3] 吳軍, 張軼君, 白光偉.Xen下虛擬機動態遷移優化策略的研究[J].電子技術應用,2015,41(11):128-131.

[4] 楊保華, 戴王劍, 曹亞倫. Docker技術入門與實踐[M]. 北京:機械工業出版社, 2015.

[5] QUAMAR A, ASHWIN KUMAR K, DESHPANDE A. SWORD: scalable workload-aware data placement for transactional workloads[M]. EDBT, 2013.

[6] Li Yinan, PATEL J M. WideTable: an accelerator for analytical data processing[C]. Proceedings of the VLDB Endowment, 2014:907-909.

An efficient data distribution strategy for container in the cloud

Ding Xirun1,2, Chen Mei1,2, Li Hui1,2

(1.College of Cumputer Science and Technology, Guizhou University, Guiyang 550025, China; 2. Guizhou Engineering Laboratory for Advanced Computing and Medical Information Service, Guizhou University, Guiyang 550025, China)

With the advent of Docker, container technology has gained much attention by cloud computing vendors. In this paper, we propose a new strategy of data redistribution for database containers, on the different application domains (transaction or analysis) of cloud platform, call for different resource of the host at runtime. Experimental results show that the proposed strategy can improve the performance of database services in the container efficiently.

cloud computing; virtualization; database; container; data redistribution

國家自然科學基金(61462012,61562010);貴州省高技術發展專項([2013]2069);貴州省科技計劃項目([2013]2099,GY[2014]3018,JZ20142001-05);貴州大學引進人才項目(700246003301);貴州大學研究生創新基金(研理工2015016)

TP39

A

1674-7720(2016)05-0026-04

丁璽潤,陳梅,李暉. 面向容器的云平臺數據重分布策略研究[J].微型機與應用,2016,35(5):26-29.

2015-11-13)

丁璽潤(1990-),男,碩士研究生,主要研究方向:數據庫技術、大數據存儲等。

陳梅(1964-),女,教授,研究生導師,主要研究方向:大規模數據管理與分析、高性能數據庫以及云服務技術等。

李暉(1982-),通信作者,男,副教授,研究生導師,主要研究方向:大規模數據管理與分析、高性能數據庫、云計算等。E-mail:cse.HuiLi@gzu.edu.cn。

猜你喜歡
數據庫實驗
記一次有趣的實驗
微型實驗里看“燃燒”
做個怪怪長實驗
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 国产区网址| 亚洲一区二区三区麻豆| 亚洲AV无码久久精品色欲| 午夜a视频| 三上悠亚在线精品二区| 成年A级毛片| a亚洲视频| 久久不卡精品| 蜜桃臀无码内射一区二区三区| 国产精品欧美亚洲韩国日本不卡| 亚洲Aⅴ无码专区在线观看q| 国产又粗又猛又爽视频| 精品国产三级在线观看| 91精品国产无线乱码在线| 亚洲日韩高清在线亚洲专区| 国产91视频免费| 波多野结衣爽到高潮漏水大喷| 91无码视频在线观看| 国国产a国产片免费麻豆| 特级欧美视频aaaaaa| 亚洲AV免费一区二区三区| 国产欧美精品一区aⅴ影院| 无码福利日韩神码福利片| 国产精品三级专区| 中文无码精品A∨在线观看不卡| 国产无码网站在线观看| 日韩123欧美字幕| 日本精品视频| 性视频久久| 欧美日韩另类在线| 亚洲男人的天堂在线观看| 老司机精品一区在线视频| 91热爆在线| 在线看片国产| 欧美狠狠干| 国产精品成人久久| 国产人前露出系列视频| 五月婷婷导航| 97se亚洲综合| 亚洲无码37.| 日韩黄色大片免费看| 日本人妻丰满熟妇区| 精品人妻一区二区三区蜜桃AⅤ| 99久久无色码中文字幕| 欧美福利在线观看| 国产精品永久久久久| 一本大道视频精品人妻 | 一区二区三区成人| 国产欧美日韩专区发布| 亚洲爱婷婷色69堂| 亚洲中文字幕23页在线| 宅男噜噜噜66国产在线观看| 91丨九色丨首页在线播放| 伦精品一区二区三区视频| 99精品高清在线播放| 欧美亚洲中文精品三区| 四虎国产精品永久在线网址| 自慰高潮喷白浆在线观看| 波多野结衣视频一区二区 | 久久精品女人天堂aaa| 成人a免费α片在线视频网站| 另类专区亚洲| 亚洲成年人片| 国产成年无码AⅤ片在线| 欧美精品影院| 久久伊人久久亚洲综合| 国产丰满大乳无码免费播放 | 国产美女精品人人做人人爽| 亚洲AV无码乱码在线观看代蜜桃| 亚洲一级色| 欧美国产日产一区二区| 成人欧美日韩| 亚洲码一区二区三区| 国产一区二区三区在线观看视频| 国产成人精品免费av| 少妇被粗大的猛烈进出免费视频| 狼友视频一区二区三区| 中文字幕人妻无码系列第三区| 亚洲国产精品无码久久一线| 99热这里只有精品5| 日韩a级毛片| 亚洲第一区在线|