郎豐凱
【摘要】本文首先對(duì)云計(jì)算的發(fā)展進(jìn)行描述,包括云計(jì)算的概念以及優(yōu)勢(shì),提出云計(jì)算當(dāng)前遇到的問(wèn)題,接著概括云計(jì)算中關(guān)鍵的虛擬化技術(shù),引出容器技術(shù)的概念和三大資源編排引擎,隨后介紹容器技術(shù)的優(yōu)勢(shì)與發(fā)展現(xiàn)狀,提出容器技術(shù)發(fā)展中需解決的問(wèn)題,最后對(duì)容器技術(shù)的發(fā)展進(jìn)行展望,并對(duì)容器技術(shù)的優(yōu)勢(shì)進(jìn)行肯定。
【關(guān)鍵字】? ? 云計(jì)算? ? 虛擬化? ? 容器? ? 編排引擎
引言
隨著科學(xué)技術(shù)的發(fā)展與社會(huì)的進(jìn)步,信息化革命經(jīng)歷了三次巨大變革。IT企業(yè)在信息化革命促進(jìn)下發(fā)展壯大,但出現(xiàn)一些亟待解決的問(wèn)題:①傳統(tǒng)IT企業(yè)中軟件與各種硬件資源相互綁定的部署模式,導(dǎo)致資源利用率較低。②IT企業(yè)層次繁多且復(fù)雜,部署新業(yè)務(wù)周期較長(zhǎng),并且無(wú)法及時(shí)提供所需資源。③中小企業(yè)不具備足夠的經(jīng)驗(yàn)和財(cái)力,去開(kāi)發(fā)并維護(hù)自己的基礎(chǔ)設(shè)施平臺(tái)。為了解決此類(lèi)問(wèn)題,通過(guò)虛擬化實(shí)現(xiàn)云計(jì)算技術(shù),而在不同的虛擬化產(chǎn)物中,發(fā)展較為成熟的是虛擬機(jī)。在虛擬化技術(shù)的提升中,開(kāi)發(fā)出容器技術(shù),既能提高資源利用率又能提升計(jì)算效率。
一、云計(jì)算的概念與構(gòu)建
云計(jì)算(Cloud Computing)的提出是在2006年的搜索引擎的會(huì)議上,但云計(jì)算的定義并未達(dá)成共識(shí)。根據(jù)云計(jì)算的特征,給出如下定義:云計(jì)算利用虛擬化通過(guò)網(wǎng)絡(luò)打破傳統(tǒng)地域的限制,將可使用的IT資源構(gòu)建成資源池,提高資源利用率,以按需計(jì)費(fèi)的商業(yè)模式服務(wù)于各類(lèi)客戶(hù)[1]。
云計(jì)算從技術(shù)層面提供云服務(wù),可分為IaaS(將基礎(chǔ)設(shè)施作為服務(wù))、PaaS(將平臺(tái)作為服務(wù))、SaaS(將軟件作為服務(wù))這三個(gè)層面。IaaS是云廠商將服務(wù)器云化構(gòu)建成資源池,為用戶(hù)按需供應(yīng)基礎(chǔ)設(shè)施服務(wù),實(shí)現(xiàn)智能的資源分配。PaaS是云廠商提供軟件運(yùn)行平臺(tái),降低用戶(hù)軟件開(kāi)發(fā)、維護(hù)的成本與開(kāi)發(fā)門(mén)檻。SaaS是將各類(lèi)軟件通過(guò)服務(wù)器端為軟件用戶(hù)提供服務(wù),用戶(hù)通過(guò)租賃無(wú)需購(gòu)買(mǎi)和安裝即可獲取軟件服務(wù)。但云計(jì)算技術(shù)難以構(gòu)建信任邊界,數(shù)據(jù)在傳遞中易被盜取;云提供商不同導(dǎo)致標(biāo)準(zhǔn)不統(tǒng)一,難以在相互間移植;需建立相關(guān)法律監(jiān)管云提供商,保障用戶(hù)隱私與IT資源的安全。
二、虛擬化技術(shù)與容器技術(shù)
虛擬化技術(shù)與容器(Container)技術(shù)在服務(wù)供給方式上有著相同的特點(diǎn),容器可作為輕量化的虛擬機(jī)。虛擬機(jī)將多余資源虛擬化,而容器技術(shù)是對(duì)操作系統(tǒng)層進(jìn)行虛擬化。
2.1虛擬化技術(shù)
虛擬化技術(shù)將計(jì)算機(jī)資源虛擬成多個(gè)相互獨(dú)立的機(jī)器,實(shí)現(xiàn)資源利用率最大化。其中服務(wù)器虛擬化發(fā)展較廣泛,同時(shí)是IaaS層面的基礎(chǔ)。被虛擬化出來(lái)的物理服務(wù)器被稱(chēng)作虛擬機(jī)[2],在其內(nèi)部的操作系統(tǒng)稱(chēng)作Guest OS,而虛擬機(jī)用于資源調(diào)度,Guest OS可通過(guò)VMM訪問(wèn)硬件資源。虛擬機(jī)有著各自的操作系統(tǒng),體積較大并且相互獨(dú)立,每次運(yùn)行均需重新部署,難以管理并會(huì)降低運(yùn)行效率。
2.2容器技術(shù)
容器技術(shù)類(lèi)比于集裝箱理論,將所需運(yùn)行的應(yīng)用程序或者庫(kù)進(jìn)行封裝,可實(shí)現(xiàn)容器內(nèi)部程序的直接運(yùn)行[3]。容器稱(chēng)作輕量級(jí)的虛擬機(jī),突出容器小型化的優(yōu)勢(shì)。隨著實(shí)際需求的提升,需要同時(shí)創(chuàng)建幾百或者幾千個(gè)虛擬機(jī)并運(yùn)行,會(huì)造成資源大量消耗并降低運(yùn)行效率。而容器技術(shù)的出現(xiàn)使虛擬機(jī)的問(wèn)題得到解決,因?yàn)槿萜魇菍?duì)操作系統(tǒng)進(jìn)行虛擬化實(shí)現(xiàn),共享同一個(gè)操作系統(tǒng)無(wú)需重新構(gòu)建,極大地提高整體性能。
圖2顯示容器可直接對(duì)物理資源層進(jìn)行訪問(wèn),這個(gè)優(yōu)勢(shì)讓容器能夠快速啟動(dòng)。容器所需鏡像小且標(biāo)準(zhǔn)化統(tǒng)一,直接在運(yùn)行環(huán)境上面進(jìn)行簡(jiǎn)單高效地部署。容器技術(shù)僅需要對(duì)Bins/Libs進(jìn)行打包,所占資源量極小,輕量化特性極強(qiáng),并且具備虛擬機(jī)相互隔離、資源分配的優(yōu)勢(shì)。容器的性能以及效率接近物理機(jī),微服務(wù)化特性極大地提升了資源利用率。容器可實(shí)現(xiàn)不同平臺(tái)之間的相互遷移,可移植性強(qiáng),實(shí)現(xiàn)在不同平臺(tái)的無(wú)差別運(yùn)行。
三、Docker容器及研究現(xiàn)狀
容器的發(fā)展當(dāng)中,Docker容器發(fā)展較快并且也技術(shù)較成熟,可作為容器的代名詞,但除了Docker容器還有Mesos容器和Coreos容器。Docker容器用Go語(yǔ)言實(shí)現(xiàn),通過(guò)Linux內(nèi)核提供容器技術(shù)服務(wù)。而在容器平臺(tái)技術(shù)當(dāng)中,將容器資源編排分為Mesos、Kubernetes、Docker這三類(lèi)引擎。
Mesos引擎[4]是由容器的集群資源調(diào)度和應(yīng)用管理框架來(lái)構(gòu)成,可直接管理數(shù)據(jù)中心的資源并進(jìn)行資源分化,提高不同應(yīng)用的開(kāi)發(fā)效率,并實(shí)現(xiàn)在Mesos資源池中資源共享,提升資源的利用率。Kubernetes引擎[5]是用于資源分配調(diào)度的輕量級(jí)引擎,可以實(shí)現(xiàn)應(yīng)用的管理編排,所構(gòu)成的集群架構(gòu)自成體系,進(jìn)行應(yīng)用程序的自動(dòng)化地安裝、部署與運(yùn)行。Docker引擎[6]為用戶(hù)提供容器集群服務(wù),由Docker開(kāi)發(fā)實(shí)現(xiàn)容器資源管理。通過(guò)Docker link連接容器構(gòu)建網(wǎng)絡(luò),根據(jù)不同的功能將容器集群劃分成組并相互隔離。利用Swarm這個(gè)在Docker容器的基礎(chǔ)之上建立的編排引擎,將容器組整合起來(lái)實(shí)現(xiàn)所有容器的全網(wǎng)絡(luò)管理。
張兆晨等人[7]為了能夠快速研發(fā)軟件、保證產(chǎn)品質(zhì)量、降低運(yùn)營(yíng)成本。構(gòu)建基于Jenkins的持續(xù)集成架構(gòu),通過(guò)Docker容器技術(shù)實(shí)現(xiàn)平臺(tái)容器化,來(lái)保障用戶(hù)需求。佟凡等人[8]利用Docker容器在處理數(shù)據(jù)上面的優(yōu)勢(shì),將其用于復(fù)雜大量地生物信息處理當(dāng)中,將生物信息數(shù)據(jù)以及相關(guān)處理工具封裝起來(lái),直接可供生物信息處理人員使用。李巍等人[9]針對(duì)Docker在網(wǎng)絡(luò)架構(gòu)上的局限性,以及網(wǎng)絡(luò)端口與物理端口相互映射相互沖突的問(wèn)題。提出基于Macvlan的Docker網(wǎng)絡(luò)隔離的方案,有效解決端口相互映射沖突的問(wèn)題,并且不易降低網(wǎng)絡(luò)的性能。
四、總結(jié)
本文介紹了云計(jì)算的發(fā)展脈絡(luò),介紹了虛擬化技術(shù)的特點(diǎn)及優(yōu)勢(shì),最后描述虛擬機(jī)的優(yōu)勢(shì)及不足,引出容器技術(shù)輕量級(jí)的特點(diǎn)以及可移植性強(qiáng)的優(yōu)勢(shì),根據(jù)Docker的發(fā)展現(xiàn)狀以及未來(lái)前景,可將其從以下幾個(gè)方面進(jìn)行改進(jìn):①提高容器資源之間的隔離程度;②因?yàn)楹侠沓潭炔桓撸杼岣呷萜靼踩孕阅?③因?yàn)閹浊_(tái)容器可在一臺(tái)物理機(jī)上同時(shí)運(yùn)行,需強(qiáng)化容器的管理;④容器編排系統(tǒng)的技術(shù)雖在不斷提高,但仍需對(duì)編排引擎進(jìn)行不斷改進(jìn)。容器技術(shù)的發(fā)展前景廣闊,必將發(fā)展成為云計(jì)算中重要的技術(shù)手段。
參? 考? 文? 獻(xiàn)
[1]龔奕利, 賀蓮, 胡創(chuàng). 云計(jì)算:概念、技術(shù)與架構(gòu)[M]. 北京:機(jī)械工業(yè)出版社, 2014.
[2] XIAO Z, SONG W, CHEN Q. Dynamic Resource Allocation Using Virtual Machines for Cloud Computing Environment[J]. IEEE Transactions on Parallel and Distributed Systems, 2013, 24(6):1107-1117.
[3]MADHUMATHI? R.? The? Relevance? of? Container? Monitoring? towards? Container Intelligence[C]. ICCCNT. IEEE, 2018: 1-5.
[4]劉文斌. 基于Mesos的數(shù)據(jù)中心資源調(diào)度和存儲(chǔ)性能優(yōu)化技術(shù)研究[C]. 廣西大學(xué), 2018.
[5]周佳威. Kubernetes 跨集群管理的設(shè)計(jì)與實(shí)現(xiàn)[D]. 浙江大學(xué), 2017.
[6]孫宏亮.Docker 源碼分析[M]. 機(jī)械工業(yè)出版社, 2015.
[7]張兆晨, 羅鐵堅(jiān). CCI:一種基于容器化的持續(xù)集成系統(tǒng)[J]. 中國(guó)科學(xué)院大學(xué)學(xué)報(bào), 2018, 35(4):569-575.
[8]佟凡, 王小磊, 李江域, 等. Docker技術(shù)在生物信息學(xué)中的應(yīng)用[J]. 軍事醫(yī)學(xué), 2016,40(7):614-616.
[9]李巍, 趙永彬, 王鷗, 等. 基于Macvlan的Docker容器網(wǎng)絡(luò)架構(gòu)研究[J]. 機(jī)械設(shè)計(jì)與制造, 2017(5):270-272.