亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Docker容器技術(shù)在后端服務(wù)設(shè)計(jì)中的應(yīng)用

        2019-07-08 02:23:41張瑞林吳學(xué)敏
        電腦知識(shí)與技術(shù) 2019年13期
        關(guān)鍵詞:微服務(wù)

        張瑞林 吳學(xué)敏

        摘要:龐雜而版本升級(jí)頻繁的互聯(lián)網(wǎng)后端服務(wù)系統(tǒng),需要一種內(nèi)部耦合性低的方法來(lái)實(shí)現(xiàn)靈活開(kāi)發(fā)、便捷部署。該文分析了Docker容器的特點(diǎn)及其核心技術(shù),然后通過(guò)實(shí)例來(lái)說(shuō)明把一個(gè)復(fù)雜的后端服務(wù)拆分為多個(gè)微服務(wù)子系統(tǒng),在Docker官方公布的OpenJDK、MySql等基礎(chǔ)鏡像之上構(gòu)建新鏡像,并運(yùn)行這些鏡像作為微服務(wù),以此來(lái)提供整體后端服務(wù)的基本方法,最后總結(jié)了本方法的優(yōu)缺點(diǎn)。

        關(guān)鍵詞: Docker技術(shù);后端服務(wù);微服務(wù)

        中圖分類(lèi)號(hào):TP3 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1009-3044(2019)13-0281-02

        隨著互聯(lián)網(wǎng)信息技術(shù)的發(fā)展,一些系統(tǒng)變得更加龐大復(fù)雜,后端系統(tǒng)給前端Web或應(yīng)用程序提供的服務(wù)越來(lái)越大,功能越來(lái)越多。因此,這些臃腫的后端系統(tǒng)帶來(lái)一系列問(wèn)題:開(kāi)發(fā)者難以掌握整個(gè)大系統(tǒng)全部細(xì)節(jié),修BUG或者增加新功能都不容易;無(wú)論修改多小的功能都要對(duì)整個(gè)系統(tǒng)進(jìn)行更新,帶來(lái)潛在未知風(fēng)險(xiǎn);每次版本更新時(shí),重新啟動(dòng)也要耗費(fèi)較長(zhǎng)時(shí)間等等。為了解決上述問(wèn)題,把復(fù)雜的后端系統(tǒng)分割為多個(gè)微小系統(tǒng)是一個(gè)不錯(cuò)的選擇,因此本文提出了一種在后端服務(wù)中應(yīng)用Docker容器作為載體來(lái)提供微服務(wù)的解決方法。

        1 Docker容器及其核心技術(shù)

        Docker技術(shù)是dotCloud 公司在2013年發(fā)布的基于Go語(yǔ)言實(shí)現(xiàn)的云開(kāi)源項(xiàng)目,與已有的傳統(tǒng)虛擬化技術(shù)相比,Docker技術(shù)有著獨(dú)特的優(yōu)勢(shì),比如輕量級(jí)、自由度更大、啟動(dòng)快等特點(diǎn),并且Docker技術(shù)可以按照所需的服務(wù)和應(yīng)用打包起來(lái)建立執(zhí)行的環(huán)境。

        Docker有3個(gè)核心概念,鏡像、容器以及倉(cāng)庫(kù)。其中Docker鏡像是一個(gè)由一層層只讀層構(gòu)成的模板文件。Docker容器使用了Linux操作系統(tǒng)內(nèi)核的命名空間(Namespace)、控制組(Control Group)、聯(lián)合文件系統(tǒng)(Union File System)等三個(gè)關(guān)鍵技術(shù)。Docker容器使用Linux內(nèi)核的Namespace特性進(jìn)行各個(gè)容器之間的隔離,通過(guò)內(nèi)核的Control Groups進(jìn)行使用資源的限制和監(jiān)控,通過(guò)高性能分層文件系統(tǒng)Union File System使得鏡像可以通過(guò)分層實(shí)現(xiàn)和繼承。圖1是Docker容器技術(shù)的架構(gòu)圖。

        1.1 命名空間Namespace技術(shù)

        Namespace技術(shù)是容器的隔離性的基礎(chǔ),Namespace將容器的進(jìn)程、網(wǎng)絡(luò)、消息、文件系統(tǒng)、UTS等系統(tǒng)資源和用戶空間隔離開(kāi)。使用了Namespace之后,進(jìn)程在Namespace之外展示為一個(gè)普通用戶,但是在Namespace內(nèi)則展現(xiàn)為root用戶(uid=0)。也就是進(jìn)程在這個(gè)Namespace里擁有root權(quán)限,在Namespace外面只有普通用戶的權(quán)限。通過(guò)Namespace特性,每個(gè)Docker容器都有自己的獨(dú)立的命名空間,運(yùn)行在該Docker中的應(yīng)用程序和運(yùn)行中獨(dú)立的操作系統(tǒng)中類(lèi)似,這種隔離性保證了容器之間彼此互不影響。

        1.2 控制組Control Groups技術(shù)

        Control Groups技術(shù)對(duì)進(jìn)程起了限制資源的作用。這些資源包括CPU,內(nèi)存,存儲(chǔ),網(wǎng)絡(luò)等。通過(guò)Control Groups還可以實(shí)時(shí)的監(jiān)控進(jìn)程的監(jiān)控和統(tǒng)計(jì)信息。比如在啟動(dòng)Docker容器時(shí),可以指定允許使用的內(nèi)存大小,Docker 會(huì)自動(dòng)為容器在目錄/sys/fs/cgroup/memory/Docker/<容器的完整長(zhǎng)ID>中創(chuàng)建相應(yīng) Cgroup 配置文件。Control Groups技術(shù)為Docker容器限定使用資源提供了技術(shù)支持。

        1.3 聯(lián)合文件系統(tǒng)Union File System技術(shù)

        聯(lián)合文件系統(tǒng)Union File System是一種輕量級(jí)高性能的分層文件系統(tǒng),能把不同物理位置的目錄合并一起掛載到同一個(gè)虛擬目錄下。Docker容器使用了聯(lián)合文件系統(tǒng)技術(shù)實(shí)現(xiàn)了鏡像的分層。在該文件系統(tǒng)中,每次修改都可以看作創(chuàng)建了一個(gè)新的層Layer,Docker鏡像就是由一層或多層這樣的Layer所構(gòu)成。鏡像層都是只讀的,但是鏡像啟動(dòng)成為容器,在容器層是可寫(xiě)的。Docker鏡像之間有順序關(guān)系,最下面一層為基礎(chǔ)鏡像,其他層都會(huì)有一個(gè)指針指向下一層,上層鏡像依賴于下層鏡像。

        2 使用Docker容器構(gòu)建后端微服務(wù)

        2.1 后端服務(wù)整體架構(gòu)

        下文以某公司的信息服務(wù)后端系統(tǒng)為例,介紹把該后端系統(tǒng)分割為多個(gè)微服務(wù)子系統(tǒng),再以Docker容器作為載體創(chuàng)建后端服務(wù)的方法。先按照業(yè)務(wù)邏輯進(jìn)行劃分后端微服務(wù),分為生產(chǎn)部后端應(yīng)用服務(wù)、生產(chǎn)部數(shù)據(jù)庫(kù)服務(wù)、MQTT消息發(fā)送服務(wù)、售后后端應(yīng)用服務(wù)、售后數(shù)據(jù)庫(kù)服務(wù)等5個(gè)微服務(wù),這些微服務(wù)都以Docker容器的方式獨(dú)立運(yùn)行于一個(gè)主機(jī)里,主機(jī)的操作系統(tǒng)是UBUNTU 16.04。圖2是以Docker為載體的后端服務(wù)系統(tǒng),Docker1~5分別承載了上面的五個(gè)微服務(wù),各個(gè)微服務(wù)的Docker以“IP:Port”的方式對(duì)外提供后端服務(wù),即要訪問(wèn)某個(gè)服務(wù),需要知道該服務(wù)的IP和端口號(hào)。

        2.2 Docker容器微服務(wù)組建步驟

        該后臺(tái)系統(tǒng)分割為5個(gè)Docker微服務(wù)后,需要Docker1和Docker4提供JAVA環(huán)境來(lái)運(yùn)行JAR包,需要Docker3提供MQTT代理服務(wù)器broker(作用是接受發(fā)布者發(fā)布的所有消息再按訂閱規(guī)則發(fā)給不同的消息訂閱者),需要Docker2和Docker5提供MySql數(shù)據(jù)庫(kù)服務(wù)。下面是這5個(gè)Docker容器微服務(wù)的組建步驟:

        (1)去Docker官方倉(cāng)庫(kù)去獲取這3種鏡像(JAVA運(yùn)行環(huán)境、MQTT代理服務(wù)器、MySql數(shù)據(jù)庫(kù)環(huán)境)。具體地是,安裝好Docker后,使用“Docker pull openjdk”命令從倉(cāng)庫(kù)里拉取openjdk這個(gè)Docker鏡像到本地,這鏡像提供了JAVA運(yùn)行環(huán)境;使用“Docker pull toke/mosquitto”命令拉mosquitto鏡像(MQTT服務(wù)鏡像);使用“Docker pull mysql”命令拉取MySql鏡像。

        (2)把生產(chǎn)部后端服務(wù)的JAVA JAR包放到JDK鏡像后生成新的鏡像。具體地是,新建Dockerfile,使用Docker build命令按照Dockerfile里設(shè)定的規(guī)則來(lái)創(chuàng)建Docker鏡像。在這個(gè)基礎(chǔ)鏡像之上,把生產(chǎn)部后端服務(wù)的JAVA JAR包拷貝到新鏡像里,再設(shè)定該容器啟動(dòng)時(shí)自動(dòng)運(yùn)行該JAR包即可。

        (3)使用Docker run命令運(yùn)行第2步生成的鏡像來(lái)創(chuàng)建Docker容器,以此提供生產(chǎn)部后端微服務(wù),運(yùn)行時(shí)需要指定容器端口和映射到宿主機(jī)的端口,因?yàn)樽罱K是需要通過(guò)“IP:端口”的形式來(lái)提供后端服務(wù),每個(gè)Docker容器都會(huì)自動(dòng)獲取一個(gè)內(nèi)網(wǎng)IP。

        (4)把售后后端服務(wù)的JAVA JAR包放到JDK鏡像后生成新的鏡像。這一步的和第2步類(lèi)似,使用的JAR包換成售后后端的JAR包即可。

        (5)運(yùn)行第4步生成的鏡像來(lái)創(chuàng)建Docker容器,以此提供售后后端微服務(wù),這一步和第3步類(lèi)似,注意,指定的宿主機(jī)映射端口號(hào)要不同。

        (6)運(yùn)行第1步獲得的MySql鏡像創(chuàng)建生產(chǎn)部數(shù)據(jù)庫(kù)容器。運(yùn)行時(shí)也指定容器端口和映射到宿主機(jī)的端口。采用數(shù)據(jù)卷(Volume)的方式把MySql容器內(nèi)部的數(shù)據(jù)庫(kù)目錄/var/lib/mysql掛載到宿主機(jī)的目錄(比如新建一個(gè)目錄/host/mysql_data/)下,這樣,容器內(nèi)的MySql數(shù)據(jù)文件就會(huì)持久化保存到宿主機(jī),即使容器本身被刪除,我們也可以在宿主機(jī)上的掛載目錄里找到數(shù)據(jù)庫(kù)文件。

        (7)運(yùn)行第1步獲得的MQTT鏡像來(lái)提供MQTT代理服務(wù)器。運(yùn)行時(shí)要指定映射到宿主機(jī)的端口和MQTT的端口。

        3 Docker容器作為后端服務(wù)載體的優(yōu)缺點(diǎn)分析

        在采用Docker容器作為后端微服務(wù)的載體后,主要有下列優(yōu)點(diǎn):

        (1)Docker容器可以打包了整個(gè)運(yùn)行環(huán)境,確保了開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境以及生產(chǎn)環(huán)境的一致性。這樣就不會(huì)出現(xiàn)開(kāi)發(fā)環(huán)境運(yùn)行良好,到生產(chǎn)環(huán)境就發(fā)生異常等問(wèn)題。生產(chǎn)環(huán)境出現(xiàn)問(wèn)題,也可以方便地把生產(chǎn)環(huán)境的鏡像拿到開(kāi)發(fā)環(huán)境進(jìn)行問(wèn)題重現(xiàn)和調(diào)查。

        (2)Docker鏡像占用硬盤(pán)空間比傳統(tǒng)虛擬機(jī)小,傳統(tǒng)虛擬機(jī)鏡像通常以G字節(jié)為單位,Docker鏡像通常只有幾M到幾百M(fèi)字節(jié)。尺寸的減小不僅僅降低了硬盤(pán)資源占用,在傳輸文件時(shí)也更加快捷。

        (3)Docker容器在對(duì)硬件要求較傳統(tǒng)虛擬機(jī)低,因?yàn)镈ocker容器之間共用了宿主機(jī)的操作系統(tǒng)資源。一臺(tái)主機(jī)上可以運(yùn)行幾十、幾百甚至更多的Docker容器。

        Docker容器作為后端微服務(wù)的載體也存在一些不足之處,主要有下面幾點(diǎn):

        (1)Docker容器之間跟宿主機(jī)共用一些系統(tǒng)資源,隔離性不徹底,會(huì)存在安全上的未知風(fēng)險(xiǎn)。

        (2)Docker基于64位Linux內(nèi)核特性,所以在其他操作系統(tǒng)比如windows或MAC上不能直接使用Docker。

        (3)在Docker里的程序調(diào)用系統(tǒng)服務(wù)時(shí)會(huì)有一些不便,比如,使用系統(tǒng)定時(shí)任務(wù)crontab,用法和普通的主機(jī)里的crontab不一樣。

        4 結(jié)語(yǔ)

        Docker官方提供了很多流行應(yīng)用的鏡像文件,比如本文用到OpenJDK、MySql、MQTT等鏡像,我們可以在這些基礎(chǔ)鏡像之上創(chuàng)建自己的應(yīng)用鏡像。采用這些鏡像為載體,把復(fù)雜的后端系統(tǒng)劃分為多個(gè)小系統(tǒng),可以充分利用Docker隔離性、系統(tǒng)資源要求相對(duì)低、部署方便等特性,特別適合模塊多,版本更新頻繁的后端系統(tǒng),在實(shí)際工程應(yīng)用中已經(jīng)取得了良好效果。

        參考文獻(xiàn):

        [1] Sam Newman.微服務(wù)設(shè)計(jì)[M].北京:人民郵電出版社,2016:23-26.

        [2] 楊保華.Docker技術(shù)入門(mén)與實(shí)踐[M].北京:機(jī)械工業(yè)出版社2016:165-171.

        [3] 謝睿.Docker技術(shù)在Web服務(wù)中的應(yīng)用[J].電子技術(shù)與軟件工程,2018(16):173.

        【通聯(lián)編輯:代影】

        猜你喜歡
        微服務(wù)
        數(shù)字文化館建設(shè)中的“微服務(wù)”
        基于微服務(wù)架構(gòu)的日志系統(tǒng)
        微服務(wù)架構(gòu)及相應(yīng)云平臺(tái)解析
        基于供給側(cè)改革理論的圖書(shū)館社交網(wǎng)絡(luò)微服務(wù)研究
        微信公眾平臺(tái)在醫(yī)院圖書(shū)館的應(yīng)用現(xiàn)狀調(diào)查
        基于微信企業(yè)號(hào)的校園移動(dòng)服務(wù)
        微服務(wù)視角下高職圖書(shū)館數(shù)字資源使用分析
        中文信息(2016年10期)2016-12-12 10:09:57
        從單一模式系統(tǒng)架構(gòu)往微服務(wù)架構(gòu)遷移轉(zhuǎn)化技術(shù)研究
        基于微信公眾平臺(tái)的高校圖書(shū)館微服務(wù)現(xiàn)狀及對(duì)策
        微媒體時(shí)代高校圖書(shū)館閱讀推廣微服務(wù)探析
        国产亚洲成av人片在线观看| 国产小视频一区二区三区| 免费蜜桃视频在线观看| 激情人妻另类人妻伦| 人妻少妇久久中文字幕一区二区| 521色香蕉网站在线观看| 激情五月婷婷六月俺也去| 一区二区三区中文字幕脱狱者| 久久www免费人成精品| 日韩精品成人一区二区三区| 成人免费丝袜美腿视频| 国产情侣亚洲自拍第一页| 香港三日本三级少妇三级视频| 亚洲人成网站免费播放| 丰满人妻中文字幕乱码| 加勒比精品视频在线播放| 亚洲熟妇久久国产精品| 91免费永久国产在线观看| 精品国产乱码一区二区三区| 最新中文字幕一区二区| 国产精品一区二区无线| 亚洲熟妇AV一区二区三区宅男| 成年女人午夜特黄特色毛片免 | 日本伊人精品一区二区三区| 精品国产一二三产品区别在哪| 日日人人爽人人爽人人片av| av资源吧首页在线观看| 亚洲 欧美 偷自乱 图片| 无码av免费一区二区三区试看 | 中文字幕一区二区三在线| 精品人妻一区二区三区浪人在线| 久久精品人人做人人综合| 国产一区二区三区韩国| 少妇精品揄拍高潮少妇桃花岛| 人妻仑乱a级毛片免费看| 热99re久久精品这里都是免费| 国内自拍偷拍一区二区| 香蕉成人伊视频在线观看| 丰满的少妇xxxxx青青青| 国产亚洲AV片a区二区| 国产精品国产三级野外国产|