鐘良侃
摘要:對(duì)現(xiàn)有信息系統(tǒng)進(jìn)行云化的一種可行的方法就是使用SOA架構(gòu)將現(xiàn)有系統(tǒng)轉(zhuǎn)變?yōu)閃eb服務(wù)系統(tǒng)。通過(guò)分析基于虛擬機(jī)部署的Web服務(wù)系統(tǒng)局限性,探討Docker虛擬化技術(shù)對(duì)Web服務(wù)系統(tǒng)設(shè)計(jì)、開(kāi)發(fā)及運(yùn)維的影響。利用Docker技術(shù)的應(yīng)用組件級(jí)虛擬化特性,將Web服務(wù)組件封裝為Docker鏡像,從而實(shí)現(xiàn)Web服務(wù)組件在Docker容器中的自動(dòng)化部署和統(tǒng)一管理。根據(jù)實(shí)驗(yàn)可以給出一種基于Docker技術(shù)的Web服務(wù)系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)方案,讓W(xué)eb服務(wù)系統(tǒng)在未來(lái)云平臺(tái)部署和運(yùn)維更加快捷方便。
關(guān)鍵詞:SOA;Docker;虛擬化;云平臺(tái)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)26-0123-04
Study on the Application of Docker Technology in Web Service System
ZHONG Liang-kan
(Academic Affair Office, Shanghai Open University, Shanghai 200000, China)
Abstract: A feasible way to deploy existing information system on the cloud platform is to reconstruct it into web service system based on SOA architecture. This article analyzed the limitations of the web service system which is deployed on visual machine, and studied the influences of using Docker virtualization technology in web service system development and implementation. Due to the Docker feature in Application components level virtualization, web service components can be packaged into specified Docker images. This paper provided a new method on design and implementation of web service system based on Docker technology. Web service components can be automated deployment and unified management by this method. Experiment results show that the method is feasible, and web service system can be run and deployed easier and quicker on cloud platform by using Docker technology in the future.
Key words: SOA; Docker; Virtualization; Cloud Platform
1 背景
隨著云計(jì)算的提出,越來(lái)越多的企事業(yè)單位開(kāi)始接受云計(jì)算按需服務(wù)的理念,這使一些軟件行業(yè)的跨國(guó)公司看到了商機(jī)。以亞馬遜、谷歌、微軟和IBM為首的云計(jì)算巨頭,正在不斷推進(jìn)云計(jì)算相關(guān)業(yè)務(wù)的開(kāi)展,其所帶來(lái)服務(wù)營(yíng)收的快速增長(zhǎng)正在使云計(jì)算服務(wù)成為這些跨國(guó)公司的主營(yíng)業(yè)務(wù)之一,據(jù)Gartner 估計(jì),2016年全球云應(yīng)用服務(wù)(SaaS)市場(chǎng)的收入預(yù)計(jì)增長(zhǎng)20.3%,達(dá)到377 億美元[1]。隨著云計(jì)算商業(yè)模式的日漸成熟,越來(lái)越多的企業(yè)和政府部門(mén)都開(kāi)始考慮將內(nèi)部使用的軟件應(yīng)用遷移到云端,從而降低IT運(yùn)維的成本。這些變化都將改變傳統(tǒng)信息系統(tǒng)的建設(shè)及部署方式,使原來(lái)存在于各企事業(yè)單位中定制化的信息系統(tǒng)逐步向面向服務(wù)架構(gòu)以及云部署的方向轉(zhuǎn)變。
云計(jì)算的實(shí)現(xiàn)離不開(kāi)虛擬化技術(shù)的支撐以及面向服務(wù)架構(gòu)的廣泛應(yīng)用。虛擬化技術(shù)將計(jì)算機(jī)物理硬件資源進(jìn)行重新整合和抽象,并形成可被動(dòng)態(tài)調(diào)用的資源,降低了信息系統(tǒng)對(duì)于物理硬件的依賴(lài),而面向服務(wù)架構(gòu)使信息系統(tǒng)從單一業(yè)務(wù)轉(zhuǎn)變成可以通過(guò)網(wǎng)絡(luò)訪問(wèn)的一組互相連接的服務(wù)模塊[2]。這些技術(shù)的逐漸成熟正在推動(dòng)著企業(yè)內(nèi)部信息系統(tǒng)進(jìn)行面向服務(wù)改造,并向云端遷移。近些年逐步流行的Docker虛擬化技術(shù),正在利用操作系統(tǒng)虛擬化本身已有的特性實(shí)現(xiàn)輕量級(jí)的應(yīng)用組件虛擬化,從而使采用若干組件構(gòu)建的信息系統(tǒng)在云平臺(tái)上部署更加快捷方便。
2 Docker技術(shù)簡(jiǎn)介
Docker 是一個(gè)基于 LXC[3] (Linux Containers)虛擬化技術(shù)的高級(jí)容器引擎,使用Go語(yǔ)言實(shí)現(xiàn)的一種面向云平臺(tái)的虛擬化技術(shù)。對(duì)比傳統(tǒng)的虛擬化技術(shù),Docker粒度更小、更輕量級(jí),它不需要虛擬化硬件,也不需要指令級(jí)模擬和即時(shí)編譯。傳統(tǒng)的虛擬化技術(shù)如 vSphere 和 Hyper-V 的目標(biāo)是建立一個(gè)可以執(zhí)行應(yīng)用的整套系統(tǒng)沙盒環(huán)境,即虛擬機(jī);而 Docker 所利用的Linux容器技術(shù)則是將應(yīng)用所需要的相關(guān)源碼、依賴(lài)庫(kù)、環(huán)境配置等都打包起來(lái)建立一個(gè)沙盒執(zhí)行環(huán)境[4]。Docker虛擬化技術(shù)有效的將由一個(gè)單獨(dú)操作系統(tǒng)管理的資源劃分到一個(gè)個(gè)孤立的組中,平衡了孤立的組之間資源使用需求的沖突,使資源的利用率大大提升。而對(duì)于運(yùn)行于Docker容器中的應(yīng)用程序來(lái)說(shuō),會(huì)產(chǎn)生一種錯(cuò)覺(jué):就好像運(yùn)行在一個(gè)獨(dú)立的Linux主機(jī)中一樣[5]。容器可以在核心CPU運(yùn)行本地指令而不需要任何特殊的解釋機(jī)制,避免了半虛擬化[6]和系統(tǒng)調(diào)用替換的復(fù)雜性,實(shí)現(xiàn)接近宿主機(jī)的運(yùn)行性能。
Docker虛擬化基于應(yīng)用組件級(jí)虛擬化技術(shù)進(jìn)行構(gòu)建,這使容器具有獨(dú)立性和封閉性的特征,一個(gè)容器的運(yùn)行不會(huì)影響其他容器或者宿主環(huán)境。每一個(gè)容器都有自己的存儲(chǔ)空間、進(jìn)程以及網(wǎng)絡(luò)接口,并包含Linux系統(tǒng)運(yùn)行所需的應(yīng)用程序。但與傳統(tǒng)操作系統(tǒng)級(jí)虛擬化技術(shù)不同,基于容器運(yùn)行的Docker虛擬化技術(shù)并沒(méi)有虛擬一個(gè)完整的Linux操作系統(tǒng),而只保留了應(yīng)用程序運(yùn)行所必需的核心操作系統(tǒng)環(huán)境。因此它具有啟動(dòng)時(shí)間短、空間占用少、分發(fā)和復(fù)制方便、資源開(kāi)銷(xiāo)少等特點(diǎn),卻具備和傳統(tǒng)虛擬機(jī)一樣的隔離性和安全性。Docker容器與傳統(tǒng)虛擬機(jī)對(duì)比如表1所示[7]:
表1 Docker容器與虛擬機(jī)之間性能差異
[特性\&Docker容器\&虛擬機(jī)\&啟動(dòng)速度\&秒級(jí)\&分鐘級(jí)\&硬盤(pán)使用\&一般為MB\&一般為GB\&性能\&接近原生\&弱于\&系統(tǒng)支持量\&單機(jī)支持上千個(gè)容器\&一般幾十個(gè)\&隔離性\&安全隔離\&完全隔離\&]
Docker自2013年發(fā)布以來(lái),已成為炙手可熱的PaaS虛擬化技術(shù)。Redhat、Google、IBM、百度、阿里巴巴等公司都相繼集成了對(duì)Docker虛擬化的支持[8]。在眾多云計(jì)算服務(wù)提供商的參與下,Docker容器應(yīng)用組件級(jí)“一次封裝,到處運(yùn)行”的目標(biāo)正在變成現(xiàn)實(shí),為應(yīng)用系統(tǒng)在各種云平臺(tái)和操作系統(tǒng)上實(shí)現(xiàn)跨平臺(tái)部署和運(yùn)行提供了全新的解決方案。Docker容器就像一個(gè)集裝箱,它并不關(guān)心你運(yùn)行的到底是什么程序,所有應(yīng)用的運(yùn)行方式都一樣——?jiǎng)?chuàng)建、開(kāi)始、停止、重啟和銷(xiāo)毀;容器也不在乎在什么樣的環(huán)境中運(yùn)行,可在個(gè)人電腦、虛擬機(jī)、云服務(wù)器、各種操作系統(tǒng)上運(yùn)行[9]。
3 基于Docker的Web服務(wù)系統(tǒng)改造方案
3.1 基于虛擬機(jī)部署的Web服務(wù)系統(tǒng)局限性
要將現(xiàn)有信息系統(tǒng)按照云平臺(tái)理念進(jìn)行重構(gòu),其中一種可行的方法就是打破現(xiàn)有信息系統(tǒng)設(shè)計(jì)架構(gòu),使用SOA架構(gòu)將現(xiàn)有系統(tǒng)模塊化、服務(wù)化,使其成為一個(gè)由若干輕量級(jí)服務(wù)組件構(gòu)建的可分布式部署的Web服務(wù)系統(tǒng)。這樣做既降低了原信息系統(tǒng)復(fù)雜度,也降低了信息系統(tǒng)部署所需資源的量級(jí),使信息系統(tǒng)能夠更加靈活的向云平臺(tái)擴(kuò)展。根據(jù)SOA架構(gòu)的設(shè)計(jì)方案,部署Web服務(wù)提供組件的宿主機(jī)的網(wǎng)絡(luò)環(huán)境和操作系統(tǒng)環(huán)境直接影響著Web服務(wù)系統(tǒng)運(yùn)維是否便捷。由于虛擬主機(jī)提供了相對(duì)統(tǒng)一的網(wǎng)絡(luò)環(huán)境和操作系統(tǒng)環(huán)境,因此越來(lái)越多的Web服務(wù)系統(tǒng)被部署在虛擬主機(jī)上。但是由于虛擬機(jī)所消耗的大量系統(tǒng)資源被分配給操作系統(tǒng)而非Web服務(wù)組件,使在一臺(tái)虛擬機(jī)中到底部署多少Web服務(wù)組件為宜成為困擾IT運(yùn)維人員的難題。另外,若遇到Web服務(wù)組件在某一時(shí)段內(nèi)需要大量被復(fù)制和擴(kuò)展的情況,最快的方法則是復(fù)制和擴(kuò)展虛擬機(jī)。由于一臺(tái)物理主機(jī)能夠承載的虛擬機(jī)是極為有限的,復(fù)制的虛擬機(jī)鏡像副本反而會(huì)增加了宿主機(jī)系統(tǒng)資源開(kāi)銷(xiāo)和運(yùn)行效率。
3.2 基于Docker部署的Web服務(wù)系統(tǒng)優(yōu)勢(shì)
Docker虛擬化技術(shù)為解決上述問(wèn)題提供了新方案。其核心思想就是將若干Web服務(wù)系統(tǒng)組件部署在若干個(gè)Docker容器中,并將整個(gè)Web服務(wù)系統(tǒng)組件連同運(yùn)行環(huán)境固化為一個(gè)PaaS服務(wù),便于向云端遷移和擴(kuò)展。Docker使用平臺(tái)即服務(wù)的理念實(shí)現(xiàn)Web服務(wù)系統(tǒng)的敏捷性、共享性、分布性和可伸縮性。其應(yīng)用優(yōu)勢(shì)主要集中在以下四個(gè)方面。
1)快速獲取或創(chuàng)建服務(wù)鏡像
由于Docker容器是一個(gè)輕量級(jí)的應(yīng)用組件級(jí)虛擬機(jī),因此Web服務(wù)組件所需的系統(tǒng)環(huán)境可以在Docker容器中搭建。通過(guò)這樣的改造,使承載Web服務(wù)程序的虛擬鏡像由原先采用虛擬機(jī)技術(shù)的幾個(gè)GB縮小為采用Docker容器技術(shù)幾百M(fèi)B,所需的存儲(chǔ)空間大大降低,并且在網(wǎng)絡(luò)中復(fù)制和傳輸?shù)男矢摺?/p>
2)服務(wù)鏡像內(nèi)環(huán)境可度量
Docker容器的隔離性使其中的Web服務(wù)組件感覺(jué)自己似乎運(yùn)行在一個(gè)獨(dú)立的Linux主機(jī)中一樣。Docker 可以對(duì)外開(kāi)放容器內(nèi)部網(wǎng)絡(luò)端口,并映射到宿主機(jī)的實(shí)際端口中去,而Docker內(nèi)環(huán)境經(jīng)過(guò)配置后可以模擬Web服務(wù)組件的操作系統(tǒng)運(yùn)行時(shí)。這些特性都極大提高了Web服務(wù)系統(tǒng)開(kāi)發(fā)時(shí)的網(wǎng)絡(luò)無(wú)關(guān)性和運(yùn)行環(huán)境無(wú)關(guān)性。
3)服務(wù)鏡像具備高伸縮性
Docker容器的運(yùn)行是基于Docker鏡像的,要使用Docker容器,首先要?jiǎng)?chuàng)建Docker鏡像。Docker鏡像就好比是一個(gè)模板,而Docker容器就好像這個(gè)模板的實(shí)例,一個(gè)Docker鏡像可以創(chuàng)建多個(gè)Docker容器,這個(gè)特性使Docker容器的擴(kuò)展變得十分方便。通過(guò)已經(jīng)固化的Docker鏡像,可以方便地在宿主機(jī)中執(zhí)行新建、運(yùn)行、停止、刪除容器操作,從而可快速建立和啟動(dòng)Web服務(wù)組件的多個(gè)副本,并在服務(wù)空閑時(shí)段刪除多余的副本。
4)服務(wù)鏡像云端應(yīng)用便捷
在云計(jì)算主要服務(wù)提供商的支持下,Docker技術(shù)正受到越來(lái)越多云計(jì)算公司的關(guān)注和應(yīng)用。兩大軟件巨頭——微軟公司以及Oracle公司都對(duì)該技術(shù)提供支持,這使Docker容器可以承載由兩大主流語(yǔ)言——Java和C#所開(kāi)發(fā)的各種Web服務(wù)組件。不僅如此,亞馬遜、微軟以及Google公司均宣布可以讓用戶(hù)創(chuàng)建的Docker鏡像在旗下的云平臺(tái)中直接運(yùn)行,這使Docker鏡像跨平臺(tái)兼容性得到了極大的提高??梢灶A(yù)見(jiàn),Docker鏡像未來(lái)可以在各大云計(jì)算服務(wù)提供商的云主機(jī)中直接調(diào)用和運(yùn)行,并承載由多種語(yǔ)言開(kāi)發(fā)的、可能需要不同運(yùn)行時(shí)環(huán)境運(yùn)行的Web服務(wù)組件,真正實(shí)現(xiàn)一次開(kāi)發(fā),到處運(yùn)行。
3.3 基于Docker的Web服務(wù)系統(tǒng)設(shè)計(jì)
一般來(lái)說(shuō),Web服務(wù)系統(tǒng)主要由一個(gè)服務(wù)調(diào)度組件和若干服務(wù)提供組件組成,提供相應(yīng)服務(wù)給服務(wù)消費(fèi)者?;谔摂M機(jī)部署的Web服務(wù)系統(tǒng)中,Web服務(wù)調(diào)度組件主要實(shí)現(xiàn)對(duì)服務(wù)提供組件的發(fā)現(xiàn)和調(diào)用,并監(jiān)控服務(wù)提供組件的運(yùn)行狀態(tài),保證Web服務(wù)系統(tǒng)的正常運(yùn)行。而對(duì)于服務(wù)提供組件的啟動(dòng)、停止以及遷移都交由虛擬機(jī)管理軟件來(lái)實(shí)現(xiàn)。這樣做有一個(gè)弊端,就是Web服務(wù)調(diào)度組件并沒(méi)有對(duì)所注冊(cè)的服務(wù)具有完全管轄權(quán),實(shí)現(xiàn)對(duì)Web服務(wù)系統(tǒng)的運(yùn)維主要依賴(lài)虛擬機(jī)管理軟件,運(yùn)維人員要將服務(wù)調(diào)度組件以及虛擬機(jī)管理軟件結(jié)合起來(lái)才能實(shí)現(xiàn)Web服務(wù)系統(tǒng)的自動(dòng)化管理功能。
而將Web服務(wù)提供組件部署在Docker容器后,Web服務(wù)調(diào)度組件除了實(shí)現(xiàn)對(duì)服務(wù)的發(fā)現(xiàn)和調(diào)用等基本功能外,還可以實(shí)現(xiàn)對(duì)于Web服務(wù)提供組件的啟動(dòng)、停止、復(fù)制和刪除,這意味著Web服務(wù)調(diào)度組件可以對(duì)所注冊(cè)的服務(wù)實(shí)現(xiàn)完全監(jiān)管。此時(shí)服務(wù)調(diào)度組件不僅存儲(chǔ)實(shí)際Web服務(wù)提供組件的調(diào)用地址和端口信息,還維護(hù)著承載Web服務(wù)提供組件的Docker容器信息,包括Docker鏡像的位置以及創(chuàng)建、運(yùn)行、停止和刪除Docker容器的Shell腳本。通過(guò)Shell腳本和JAVA管理程序開(kāi)發(fā)就可以自動(dòng)化調(diào)用Docker技術(shù)所提供的容器配置命令完成服務(wù)重新配置和運(yùn)行?;贒ocker容器部署的Web服務(wù)調(diào)度組件的運(yùn)行步驟如圖1所示:
從圖1可知,若服務(wù)可用,服務(wù)調(diào)度組件的執(zhí)行順序與之前無(wú)異,一旦服務(wù)不可用,服務(wù)調(diào)度組件可以通過(guò)Shell腳本快速重啟Docker容器。這得益于Docker容器是通過(guò)Docker鏡像創(chuàng)建的,再下一次遇到同樣錯(cuò)誤停止前,Web服務(wù)會(huì)保持剛開(kāi)始運(yùn)行時(shí)的狀態(tài)。而由于Web服務(wù)所需要調(diào)用或生成的業(yè)務(wù)數(shù)據(jù)其實(shí)并不存儲(chǔ)在容器內(nèi),因此容器的重啟和還原對(duì)業(yè)務(wù)數(shù)據(jù)沒(méi)有任何影響,Docker容器的秒級(jí)啟動(dòng)速度保證了服務(wù)的高可用性。當(dāng)服務(wù)需要擴(kuò)展時(shí),服務(wù)調(diào)度組件可以通過(guò)執(zhí)行預(yù)設(shè)的Shell腳本,在Docker宿主機(jī)內(nèi)快速創(chuàng)建并運(yùn)行一個(gè)新的承載服務(wù)提供組件的容器副本,并將后續(xù)的服務(wù)請(qǐng)求引導(dǎo)到新的Web服務(wù)提供組件副本中去。對(duì)于不再需要使用的Docker容器副本,服務(wù)調(diào)度組件也可以通過(guò)執(zhí)行腳本實(shí)現(xiàn)對(duì)Web服務(wù)提供組件副本的停止和刪除,實(shí)現(xiàn)Web服務(wù)系統(tǒng)的自動(dòng)伸縮。應(yīng)用Docker容器技術(shù)后,可以通過(guò)簡(jiǎn)單的程序開(kāi)發(fā)就實(shí)現(xiàn)服務(wù)的高可用性和可伸縮性,而不需要依賴(lài)專(zhuān)業(yè)的虛擬機(jī)管理軟件的輔助來(lái)實(shí)現(xiàn)這些功能,真正實(shí)現(xiàn)了服務(wù)調(diào)度組件作為“服務(wù)管理者”角色在SOA系統(tǒng)中所起的管理者作用。
Docker技術(shù)要求Web服務(wù)提供組件在設(shè)計(jì)時(shí)盡量小型化。因此在Web服務(wù)提供組件設(shè)計(jì)中,明確服務(wù)提供組件的所提供的單一邏輯功能,即一個(gè)服務(wù)提供組件完成單一業(yè)務(wù),而復(fù)雜業(yè)務(wù)由多個(gè)服務(wù)組件組合提供。
經(jīng)過(guò)對(duì)服務(wù)調(diào)度組件以及服務(wù)提供組件的改造,基于Docker技術(shù)的Web服務(wù)系統(tǒng)設(shè)計(jì)模型如圖2所示。
從圖2我們可以看到,基于實(shí)體主機(jī)的Web服務(wù)系統(tǒng)的服務(wù)調(diào)度組件被分解為兩個(gè)部分,一個(gè)是面向服務(wù)消費(fèi)者的服務(wù)注冊(cè)組件,一個(gè)是部署于Linux宿主機(jī)的服務(wù)管理組件。若Docker服務(wù)鏡像分布在不同的主機(jī)中部署,那么就需要為每個(gè)主機(jī)部署服務(wù)管理組件,并建立服務(wù)注冊(cè)組件與服務(wù)管理組件之間的固定聯(lián)系。而若將Web服務(wù)系統(tǒng)放在云平臺(tái)上,考慮到云主機(jī)的資源可伸縮性,也可以將服務(wù)注冊(cè)組件和服務(wù)管理組件合并為服務(wù)調(diào)度組件部署在運(yùn)行Docker服務(wù)鏡像的云主機(jī)中。
4 基于Docker的Web服務(wù)系統(tǒng)實(shí)現(xiàn)
根據(jù)Web服務(wù)系統(tǒng)改造方案,可以基于JAX-WS 2.0框架通過(guò)編程方式完成對(duì)服務(wù)管理組件和服務(wù)注冊(cè)組件的實(shí)現(xiàn),并將服務(wù)提供組件部署在自行創(chuàng)建的Docker容器中,從而實(shí)現(xiàn)Web服務(wù)系統(tǒng)基于Docker的部署。這里我們以Linux 6.4實(shí)體主機(jī)部署為例描述基于Docker技術(shù)的Web服務(wù)系統(tǒng)實(shí)現(xiàn)過(guò)程。
1)創(chuàng)建運(yùn)行環(huán)境并完成Docker鏡像創(chuàng)建
Tomcat在Docker Hub庫(kù)中發(fā)布了官方的Docker鏡像,由于Web服務(wù)系統(tǒng)采用的是Tomcat 7.0運(yùn)行環(huán)境,可以使用docker pull命令下載對(duì)應(yīng)的Tomcat 7.0鏡像。我們使用docker run命令啟動(dòng)Tomcat容器,先將服務(wù)提供組件和所需JAR包拷入Docker容器中,并在容器中掛載服務(wù)提供組件目錄實(shí)現(xiàn)部署文件在容器內(nèi)共享,并將容器中Tomcat的8080端口映射到宿主機(jī)的6000端口上,實(shí)現(xiàn)承載Web服務(wù)組件的特定服務(wù)鏡像創(chuàng)建。
2)部署Docker鏡像并編寫(xiě)Shell遠(yuǎn)程管理腳本
完成對(duì)裝載Web服務(wù)提供組件的服務(wù)鏡像創(chuàng)建后,將這個(gè)鏡像包復(fù)制到擬運(yùn)行Docker容器的Linux宿主機(jī)中。為方便起見(jiàn),我們采用編寫(xiě)Shell腳本的方式實(shí)現(xiàn)對(duì)Web服務(wù)容器的啟動(dòng)、停止以及重啟,并將這個(gè)腳本作為服務(wù)管理組件部署在Linux宿主機(jī)中。
3)完成服務(wù)注冊(cè)并實(shí)現(xiàn)管理腳本遠(yuǎn)程調(diào)用
編寫(xiě)完Shell管理腳本后,可以通過(guò)Java編寫(xiě)的服務(wù)注冊(cè)組件來(lái)遠(yuǎn)程管理Docker 容器了。使用Java語(yǔ)言開(kāi)發(fā)程序?qū)崿F(xiàn)對(duì)宿主機(jī)服務(wù)管理組件的遠(yuǎn)程調(diào)用。在JAVA項(xiàng)目中引用Ganymed-SSH2包,使用JAR包中的Connection類(lèi)實(shí)現(xiàn)基于用戶(hù)名密碼的宿主機(jī)遠(yuǎn)程登錄。登錄成功后,使用session類(lèi)的openSession()方法創(chuàng)建新的用戶(hù)會(huì)話,最后使用execCommand()方法遠(yuǎn)程調(diào)用在服務(wù)組件部署主機(jī)上已經(jīng)完成的shell管理腳本,實(shí)現(xiàn)對(duì)Docker容器的管理。而服務(wù)提供組件所在的宿主機(jī)IP地址、調(diào)用端口、宿主機(jī)SSH登錄用戶(hù)名和密碼等信息存儲(chǔ)在服務(wù)管理數(shù)據(jù)庫(kù)中供服務(wù)注冊(cè)組件查詢(xún)和調(diào)用。
實(shí)現(xiàn)以上三個(gè)步驟后,基于Docker容器的Web服務(wù)系統(tǒng)就可以對(duì)外提供服務(wù)了。而且通過(guò)改造后的Web服務(wù)注冊(cè)組件和管理組件,可以實(shí)現(xiàn)Web服務(wù)系統(tǒng)的自動(dòng)化管理和自適應(yīng)伸縮功能。
5 結(jié)束語(yǔ)
Docker正在讓W(xué)eb服務(wù)系統(tǒng)的開(kāi)發(fā)和運(yùn)維變得越來(lái)越簡(jiǎn)單,利用這一技術(shù),Web服務(wù)系統(tǒng)在敏捷開(kāi)發(fā)、靈活部署、自動(dòng)運(yùn)維和可伸縮性方面比采用其他軟件架構(gòu)的系統(tǒng)更具優(yōu)勢(shì)。只要通過(guò)創(chuàng)建服務(wù)的容器運(yùn)行環(huán)境,并承載自行開(kāi)發(fā)的輕量級(jí)Web服務(wù)組件,就可以將該組件發(fā)布為Docker服務(wù)鏡像,在不同的平臺(tái)和系統(tǒng)中運(yùn)行,并靈活組合成不同的Web服務(wù)系統(tǒng)滿(mǎn)足實(shí)際需求。隨著對(duì)該技術(shù)應(yīng)用研究的深入,相信在云計(jì)算服務(wù)提供商以及眾多開(kāi)發(fā)者的支持下,未來(lái)該技術(shù)會(huì)得到更多開(kāi)發(fā)者的認(rèn)同并得到廣泛應(yīng)用。
參考文獻(xiàn):
[1] Gartner Says Worldwide Public Cloud Services Market Is Forecast to Reach $204 Billion in 2016[EB/OL].(2016-01-25).http://www.gartner.com/newsroom/id/3188817.
[2] 王慶波, 金涬, 何樂(lè), 等. 虛擬化和云計(jì)算[M]. 北京: 電子工業(yè)出版社, 2010: 133-134.
[3] 汪愷, 張功萱, 周秀敏. 基于容器虛擬化技術(shù)研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2015(8): 138-141.
[4] 張建, 謝天鈞. 基于Docker的平臺(tái)即服務(wù)架構(gòu)研究[J]. 信息技術(shù)與信息化, 2014(10): 131-134.
[5] 姜渠. 一種基于Linux容器的動(dòng)態(tài)遷移方法[J]. 信息技術(shù)與信息化, 2015(2): 66-68.
[6] 尹文開(kāi). 云平臺(tái)中虛擬機(jī)生命周期管理的研究與實(shí)現(xiàn)[D]. 北京: 北京郵電大學(xué), 2015.
[7] 楊保華, 戴王劍, 曹亞侖. Docker技術(shù)入門(mén)與實(shí)踐[M]. 北京: 機(jī)械工業(yè)出版社, 2015: 7-8.
[8] 陳清金, 陳存香, 張巖. Docker技術(shù)實(shí)現(xiàn)分析[J]. 信息通信技術(shù), 2015(2): 37-39.
[9] 肖俊. 基于Docker的跨主機(jī)容器集群自動(dòng)伸縮設(shè)計(jì)與實(shí)現(xiàn)[D]. 西安: 西北大學(xué), 2015.