宋慶鑫
摘要:基于容器的微服務(wù)已經(jīng)成為現(xiàn)在系統(tǒng)開發(fā)設(shè)計非常常見的方式,該種方法在應(yīng)用時具有非常多的優(yōu)勢和特征。本文在此先對微服務(wù)的架構(gòu)進(jìn)行分析,然后分析了微服務(wù)所具有的特性,分別是技術(shù)選型靈活、復(fù)雜度可控、獨立部署以及容錯性與擴(kuò)展性等,此后以Docker容器為例探討了容器的虛擬化技術(shù),最后對分析了基于容器的微服務(wù)應(yīng)用。
關(guān)鍵詞:容器;微服務(wù)架構(gòu);虛擬化技術(shù);Docker容器
中圖分類號:TP3 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2018)02-0070-02
當(dāng)前時期各方對于微服務(wù)的爭論非常多,對其評價也各不相同。在設(shè)計系統(tǒng)或進(jìn)行開發(fā)時,通過微服務(wù)的應(yīng)用可以比較輕松的實現(xiàn)跨部門開發(fā)的目標(biāo)。而且利用容器的自動修復(fù)及其編排功能,有助于實現(xiàn)微服務(wù)的智能托管,進(jìn)而將運(yùn)維成本與難度等盡可能的降到最低。在對各個系統(tǒng)模塊進(jìn)行開發(fā)時,涉及到多種語言和框架,并且具有非常多的獨立進(jìn)程,大大增加了系統(tǒng)集成的難度?,F(xiàn)階段,很多公司在應(yīng)用微服務(wù)架構(gòu)方面,也都取得了非常好的效果,但是還有很大一部分公司并沒有進(jìn)行應(yīng)用。
1 微服務(wù)架構(gòu)
就微服務(wù)架構(gòu)來說,主要是由多個微服務(wù)所組成,在進(jìn)行軟件開發(fā)時,應(yīng)用的方式相比以往發(fā)生了非常大的改變。在開發(fā)軟件的過程中,實際應(yīng)用的也不再是庫,而是對微服務(wù)進(jìn)行開發(fā)。此外,每個微服務(wù)都有與之對應(yīng)的業(yè)務(wù)功能,而且這些功能相對獨立。軟件也全都被解耦成多個較小的片段,各片段的功能也都相對獨立。這些功能片段會限制系統(tǒng)中的其他部分,可以較好的對外界的故障進(jìn)行有效的應(yīng)對。在對新特性的請求進(jìn)行應(yīng)對時,微服務(wù)變更的速度非???,而且容器擴(kuò)張了其解耦性,最終從底層的硬件中分離出軟件,而進(jìn)行微服務(wù)的主要目的就是對應(yīng)用程序進(jìn)行分解,以更好的進(jìn)行部署[1]。微服務(wù)架構(gòu)大多應(yīng)用與各服務(wù)的交互。微服務(wù)和ESB的差別比較顯著,并不包括對服務(wù)間接口的同級別控制和數(shù)據(jù)建模進(jìn)行定義。在ESB中,存在很多模式驗證和消息路由等。傳統(tǒng)的架構(gòu)主要是面向服務(wù),而微服務(wù)與之相比,其架構(gòu)更加的簡單。并且在應(yīng)用之后,可以獲得較快的開發(fā)速度。如果服務(wù)發(fā)生變化,僅僅匹配與之對應(yīng)的業(yè)務(wù)需求即可。因此,實際上微服務(wù)架構(gòu)最為核心和關(guān)鍵的優(yōu)勢在于其擴(kuò)展較為獨立,能夠完全替代傳統(tǒng)內(nèi)存,并且彌補(bǔ)其劣勢。在進(jìn)行微服務(wù)的部署時,可以在非常小的主機(jī)上進(jìn)行。
2 微服務(wù)的特性
2.1 技術(shù)選型靈活
在微服務(wù)架構(gòu)下,在技術(shù)選型過程中相對而言更加靈活??梢猿浞纸Y(jié)合自身對于服務(wù)所產(chǎn)生的需求,同時還可以結(jié)合當(dāng)前時期的行業(yè)發(fā)展現(xiàn)狀,合理的做出對技術(shù)棧的選擇。相對而言,各個微服務(wù)并不復(fù)雜,而且非常簡單。在升級技術(shù)棧時,需要面臨的風(fēng)向相對來說也比較低,在一定情況下也完全可以進(jìn)行微服務(wù)的重構(gòu)。
2.2 復(fù)雜度可控
每個微服務(wù)的功能都比較單一,可以將整體進(jìn)行分解,進(jìn)而成為一組服務(wù)。不僅沒有改變整體的功能,也能將程序分解成可以進(jìn)行管理的服務(wù)或模塊。通過對接口進(jìn)行定義,進(jìn)而對服務(wù)邊界進(jìn)行表述,每個服務(wù)的界限都被清晰的定義。在將應(yīng)用進(jìn)行分解時,也不會出現(xiàn)很多復(fù)雜問題聚集起來的情況,而且在該模式下,各個部分模塊化的水平更高,不斷得到強(qiáng)化,也因此具有體積小和復(fù)雜度低,并且易于維護(hù)等。
2.3 獨立部署
對于微服務(wù)而言,其具備獨立運(yùn)動的條件,所以在進(jìn)行部署時,也具有獨立性的特征。以往傳統(tǒng)的架構(gòu)模式下,如果想對程序中的一個細(xì)節(jié)進(jìn)行變動,也會導(dǎo)致整體的重構(gòu)和部署。而在新模式下,即便個別微服務(wù)出現(xiàn)其他情況,需要發(fā)送變更,也不會對原來的部署與編譯產(chǎn)生影響。由于微服務(wù)所組成的應(yīng)用,與可并行的發(fā)布流程非常接近,使得發(fā)布的效率比以往更高,而且也不容易對系統(tǒng)環(huán)境造成污染,進(jìn)而將交付周期縮短。
2.4 容錯性
如果其中一組應(yīng)用出現(xiàn)故障,以往模式下,故障必然會出現(xiàn)擴(kuò)散,最終使得應(yīng)用失敗[2]。而在微服務(wù)架構(gòu)下,具備將故障隔離開來的功能,將其置于故障單元中。因此,通過運(yùn)用這種設(shè)計以及微服務(wù)所具有的一些更加先進(jìn)的特點,使得應(yīng)用層具備容錯的特征。
2.5 擴(kuò)展性
在微服務(wù)架構(gòu)模式下,每一個服務(wù)都具備獨立擴(kuò)張的條件,也能進(jìn)行有效的橫向擴(kuò)張,進(jìn)而在不同的節(jié)點上對整個應(yīng)用進(jìn)行復(fù)制。當(dāng)在擴(kuò)展需求上應(yīng)用不同的組件時,其差異性也非常多。因此,可以看出該種架構(gòu)的靈活性較高,能夠在各個基礎(chǔ)設(shè)施間,發(fā)揮擴(kuò)展服務(wù)的作用,進(jìn)而可以將風(fēng)險進(jìn)行有效的降低。
3 容器的虛擬化技術(shù)
通過容器技術(shù)的應(yīng)用,能夠起到緩解微服務(wù)負(fù)面影響的作用。該技術(shù)使用了內(nèi)核接口,允許多個容器共享一個內(nèi)核,并且各個容器被完全隔離。Docker是較為成功的基于容器應(yīng)用微服務(wù)架構(gòu)的案例。Docker容器的基本單位是資源分割和調(diào)度,并對整個軟件的運(yùn)行環(huán)境進(jìn)行封蓋,該解決方案可以實現(xiàn)跨平臺并且可以移植,而且應(yīng)用起來非常簡單[3]??梢栽谌萜鲀?nèi)部快速的部署應(yīng)用,而且以Docker作為代表的容器技術(shù),標(biāo)準(zhǔn)化水平已經(jīng)非常高,不僅能夠進(jìn)行存儲服務(wù),而且具有可伸縮的特性。該容器技術(shù)可以構(gòu)建應(yīng)用的鏡像,并進(jìn)行發(fā)布和持續(xù)交付等,同時對運(yùn)維環(huán)節(jié)進(jìn)行優(yōu)化開發(fā),不斷提升開展業(yè)務(wù)的效率,將IT成本降到最低。通過各個容器之間隔離的實現(xiàn),促使由不同語言所開發(fā)的微服務(wù)代碼在部署起來更加的容易??傮w來說,Docker容器具有兩個比較明顯的特點,分別是快速、可移植性。也就是說該容器的敏捷性更高,性能也更好。
4 基于容器的微服務(wù)應(yīng)用
通過應(yīng)用容器技術(shù)可以有效的解決微服務(wù)架構(gòu)導(dǎo)致的問題,而且在應(yīng)用Linux容器技術(shù)以后,一個內(nèi)核能夠服務(wù)于多個容器,并且實現(xiàn)完全的隔離。在Docker執(zhí)行環(huán)境下,接口的標(biāo)準(zhǔn)化程度也更高,使得容器的共享等難度都大大的降低,這就導(dǎo)致各種語言開發(fā)下,部署微服務(wù)代碼時,都更加的簡單。雖然為負(fù)架構(gòu)具有很多方面的優(yōu)勢,但是在構(gòu)建和部署以及維護(hù)時,存在非常大的困難[4]。但是容器可以提供輕量級,使得微服務(wù)在進(jìn)行虛擬化運(yùn)行時,獲得載體的難度大大降低。與此同時,基于容器技術(shù)的云服務(wù)使得微服務(wù)的創(chuàng)建相對來說非常簡單,進(jìn)而可以在云端大規(guī)模的進(jìn)行微服務(wù)的實踐。并且基于容器的微服務(wù)應(yīng)用具有標(biāo)準(zhǔn)化、資源利用率高、隔離以及跨平臺等方面的特征,使得應(yīng)用起來更加的高效。就標(biāo)準(zhǔn)化特征而言,在構(gòu)建標(biāo)準(zhǔn)開發(fā)環(huán)境的過程中,如果應(yīng)用鏡像技術(shù)并對環(huán)境與應(yīng)用鏡像進(jìn)行遷移,會使得Docker容器不存在上下線的環(huán)境差異,能夠確保應(yīng)用環(huán)境具有一致性。所以,對于運(yùn)維和測試人員而言,可以對軟件鏡像進(jìn)行直接部署,這也使得持續(xù)集成和測試以及發(fā)布的過程得到了極大的簡化。
5 結(jié)語
近年來,微服務(wù)架構(gòu)和與之相關(guān)的容器等技術(shù)實現(xiàn)了非??焖俚陌l(fā)展,在將其融合之后,逐漸發(fā)展成為較為領(lǐng)先的設(shè)計思想。通過微服務(wù)架構(gòu)和容器技術(shù)等,應(yīng)用程序的優(yōu)點得以充分發(fā)揮,而且可以從底層的硬件中分離出軟件。除此之外,容器的存在使得微服務(wù)架構(gòu)被極大的簡化,創(chuàng)建了更加快捷的應(yīng)用程序,不僅非常完善,維護(hù)起來也比較簡單。
參考文獻(xiàn)
[1]丁晶晶,韓少杰,李棟,等.微服務(wù)分布式架構(gòu)的GIS公有云平臺實踐[J].測繪與空間地理信息,2017,40(s1):56-60.
[2]孫海洪.微服務(wù)架構(gòu)和容器技術(shù)應(yīng)用[J].金融電子化,2016,(5):63-64.
[3]楊鷗,張羿,耿貞偉.微服務(wù)架構(gòu)在容器云中的應(yīng)用實踐[J].電腦與電信,2017,(7):79-81.
[4]嚴(yán)麗云,楊新章,何震葦,等.容器技術(shù)及可行應(yīng)用場景分析[J].廣東通信技術(shù),2017,37(11):46-51.