王玉琳 曹小靜 李智深 周春云
近幾年來(lái),隨著信息技術(shù)的高速發(fā)展及現(xiàn)代化信息處理環(huán)境的復(fù)雜化,傳統(tǒng)信息系統(tǒng)變得越來(lái)越龐大,軟硬件之間、服務(wù)模塊間、前后臺(tái)之間緊耦合嚴(yán)重,導(dǎo)致信息系統(tǒng)擴(kuò)展性能差、重構(gòu)能力弱、升級(jí)改造困難,新功能開發(fā)或修改更加耗時(shí)。傳統(tǒng)的RPC架構(gòu)或SOA架構(gòu)已無(wú)法滿足各級(jí)各類信息系統(tǒng)適應(yīng)多樣化任務(wù)、快速更新迭代的需求。在信息系統(tǒng)需求升級(jí)的大背景下,開展國(guó)產(chǎn)微服務(wù)架構(gòu)關(guān)鍵技術(shù)研究已迫在眉睫,力求解決國(guó)產(chǎn)信息系統(tǒng)受國(guó)產(chǎn)基礎(chǔ)硬件平臺(tái)制約、運(yùn)行效率低、交付擴(kuò)展及迭代能力不足等問(wèn)題。
國(guó)產(chǎn)微服務(wù)基礎(chǔ)架構(gòu)技術(shù)是堅(jiān)持國(guó)產(chǎn)自主可控發(fā)展路線,將國(guó)產(chǎn)信息系統(tǒng)中的不同模塊以微服務(wù)方式進(jìn)行拆分,每個(gè)微服務(wù)是獨(dú)立內(nèi)聚的業(yè)務(wù)邏輯,能夠單獨(dú)開發(fā)、調(diào)試、部署、運(yùn)行及治理,每個(gè)服務(wù)運(yùn)行在其獨(dú)立的進(jìn)程中,服務(wù)與服務(wù)間采用輕量級(jí)的通信機(jī)制互相協(xié)作。通過(guò)微服務(wù)與Docker技術(shù)相結(jié)合,將國(guó)產(chǎn)信息系統(tǒng)中的微服務(wù)編譯、部署、調(diào)測(cè)及升級(jí)演化成全自動(dòng)化的工程,推動(dòng)國(guó)產(chǎn)微服務(wù)基礎(chǔ)架構(gòu)的快速發(fā)展。國(guó)產(chǎn)微服務(wù)基礎(chǔ)架構(gòu)關(guān)鍵技術(shù)研究主要包含基于硬件混合架構(gòu)容器技術(shù)、容器化微服務(wù)開發(fā)標(biāo)準(zhǔn)等方面,并基于硬件平臺(tái)構(gòu)建微服務(wù)原型系統(tǒng)進(jìn)行關(guān)鍵技術(shù)驗(yàn)證。
國(guó)產(chǎn)微服務(wù)基礎(chǔ)架構(gòu)關(guān)鍵技術(shù)研究采用“3層2域”,包括服務(wù)基礎(chǔ)環(huán)境層、微服務(wù)支撐層、剖分方法與典型應(yīng)用層,以及技術(shù)研究實(shí)施體系域與標(biāo)準(zhǔn)規(guī)范保障體系域,研究總體架構(gòu)如圖1所示。
服務(wù)基礎(chǔ)環(huán)境層采用容器技術(shù)實(shí)現(xiàn)國(guó)產(chǎn)龍芯、飛騰等混合硬件架構(gòu)資源的虛擬和池化,以容器形式提供混合架構(gòu)的微服務(wù)運(yùn)行時(shí)環(huán)境。
服務(wù)支撐層主要由數(shù)據(jù)層、運(yùn)行層、服務(wù)層組成。數(shù)據(jù)層為微服務(wù)訪問(wèn)、交換、配置、運(yùn)行提供數(shù)據(jù)共享同步、網(wǎng)內(nèi)融合與協(xié)同調(diào)度;運(yùn)行層為微服務(wù)提供容器編排管理框架,支持容器管理與協(xié)同調(diào)度,具備迭代增量、快速交付能力;服務(wù)層以微服務(wù)為對(duì)象,提供動(dòng)態(tài)協(xié)同交互能力,支持集中式、自組織協(xié)同等服務(wù)模式,并提供服務(wù)制作、注冊(cè)管理、編排組合應(yīng)用能力。
剖分方法與典型應(yīng)用層主要包括由剖分機(jī)制、剖分模型、剖分方法與剖分評(píng)價(jià)等,并結(jié)合典型應(yīng)用進(jìn)行關(guān)鍵技術(shù)驗(yàn)證。
(一)基于混合硬件架構(gòu)的容器技術(shù)
通過(guò)在國(guó)產(chǎn)龍芯及飛騰平臺(tái)移植、適配Docker引擎,并對(duì)Docker存儲(chǔ)驅(qū)動(dòng)進(jìn)行優(yōu)化,提供微服務(wù)運(yùn)行時(shí)環(huán)境。在Docker移植適配方面,首先,在國(guó)產(chǎn)龍芯、飛騰等國(guó)產(chǎn)平臺(tái)上優(yōu)化GO編譯器;其次,選擇穩(wěn)定的Docker發(fā)行版,保證各國(guó)產(chǎn)平臺(tái)上接口的一致性;最后,移植Containerd、runC等組件,修改與平臺(tái)架構(gòu)相關(guān)的Golang代碼、結(jié)構(gòu)體定義和常量定義等,修復(fù)無(wú)法解析信號(hào)SIGEMT和部分龍芯、飛騰架構(gòu)兼容的問(wèn)題,優(yōu)化Docker運(yùn)行效率。在存儲(chǔ)驅(qū)動(dòng)優(yōu)化方面,通過(guò)優(yōu)化地址映射、I/O攔截和緩存管理等機(jī)制解決國(guó)產(chǎn)硬件平臺(tái)上現(xiàn)有存儲(chǔ)驅(qū)動(dòng)存在寫時(shí)復(fù)制操作粗粒度較大、冗余頁(yè)緩存、I/O性能較低等問(wèn)題。首先,為了以較低開銷支持細(xì)粒度的寫時(shí)復(fù)制操作,地址映射機(jī)制采用兩級(jí)映射策略來(lái)支持兩種不同的虛擬塊大小,并針對(duì)不同的寫請(qǐng)求采用按需分配的塊分配機(jī)制,以實(shí)現(xiàn)高效的寫時(shí)復(fù)制操作;其次,為了有效地減少冗余I/O請(qǐng)求,冗余I/ O攔截提供了一個(gè)輕量級(jí)的攔截機(jī)制,可以準(zhǔn)確地檢測(cè)冗余I/O請(qǐng)求,并且支持從其它容器緩存而不是硬盤中讀取數(shù)據(jù);最后,基于有效的緩存監(jiān)控方法和回收策略,緩存管理機(jī)制可以顯著地減少緩存中的無(wú)用重復(fù)數(shù)據(jù),進(jìn)而達(dá)到提升緩存效率的目的。
(二)結(jié)合容器技術(shù)的微服務(wù)開發(fā)規(guī)范
通過(guò)研究容器運(yùn)行機(jī)理與微服務(wù)特性,形成容器化微服務(wù)開發(fā)規(guī)范,支持兩者良好融合,實(shí)現(xiàn)微服務(wù)運(yùn)維的一站式自動(dòng)化,開發(fā)規(guī)范如下:
1.微服務(wù)原則:職能單一、低耦合與高內(nèi)聚、前后端分離、無(wú)狀態(tài)服務(wù)。
2.異常退出機(jī)制:服務(wù)提供異常退出機(jī)制,當(dāng)服務(wù)啟動(dòng)失敗或異常時(shí)能夠正常退出。
3.長(zhǎng)和短連接機(jī)制:應(yīng)用服務(wù)采用短連接訪問(wèn)機(jī)制,特定情況下需要保持長(zhǎng)連接時(shí),應(yīng)用服務(wù)應(yīng)具備重連機(jī)制。
4.服務(wù)與客戶端IP解耦:應(yīng)用服務(wù)無(wú)法獲取到客戶端請(qǐng)求的源IP,不支持應(yīng)用服務(wù)對(duì)客戶端IP進(jìn)行檢測(cè)。
5.服務(wù)與本地IP解耦:應(yīng)用服務(wù)對(duì)外IP和本地IP代表不同的含義,不支持應(yīng)用服務(wù)將對(duì)外IP和本地IP進(jìn)行一致性檢測(cè)。
6.服務(wù)主程序前臺(tái)運(yùn)行,不能以守護(hù)進(jìn)程方式運(yùn)行:應(yīng)用服務(wù)主程序需要前臺(tái)運(yùn)行,如果后臺(tái)運(yùn)行則在容器啟動(dòng)完成該程序后,認(rèn)為該程序執(zhí)行結(jié)束,容器將立即退出。
基于國(guó)產(chǎn)微服務(wù)基礎(chǔ)架構(gòu)關(guān)鍵技術(shù)研究成果,設(shè)計(jì)并構(gòu)建微服務(wù)原型系統(tǒng),系統(tǒng)由管理、計(jì)算、存儲(chǔ)等三類節(jié)點(diǎn)組成,部署拓?fù)淙鐖D2所示。
管理節(jié)點(diǎn)是系統(tǒng)的控制中心,負(fù)責(zé)管理和控制,接收用戶控制指令并負(fù)責(zé)具體執(zhí)行過(guò)程。管理節(jié)點(diǎn)采用集群式(至少3個(gè)節(jié)點(diǎn))設(shè)計(jì),避免單點(diǎn)故障,確保系統(tǒng)自身穩(wěn)定性。計(jì)算節(jié)點(diǎn)是執(zhí)行任務(wù)的負(fù)載節(jié)點(diǎn),負(fù)責(zé)執(zhí)行管理節(jié)點(diǎn)分發(fā)的任務(wù)(以容器形式),并監(jiān)控容器的運(yùn)行狀態(tài)。存儲(chǔ)節(jié)點(diǎn)為容器提供存儲(chǔ)空間,支持本地、共享等存儲(chǔ)方式,存儲(chǔ)節(jié)點(diǎn)為可選。計(jì)算節(jié)點(diǎn)可替代存儲(chǔ)節(jié)點(diǎn),使用自帶硬盤提供存儲(chǔ)空間。管理節(jié)點(diǎn)之上也可以部署計(jì)算組件,既承擔(dān)管理職責(zé)又充當(dāng)計(jì)算節(jié)點(diǎn)的角色,實(shí)現(xiàn)管理節(jié)點(diǎn)資源最大化利用。
基于四臺(tái)龍芯服務(wù)器(CPU:龍芯3A3000處理器、雙路、8核,內(nèi)存:16GB,磁盤:1TB)和中標(biāo)麒麟服務(wù)器操作系統(tǒng)V5.0采用“3管理節(jié)點(diǎn)+4計(jì)算節(jié)點(diǎn)”部署模式構(gòu)建的微服務(wù)原型系統(tǒng),采用Iperf工具測(cè)試跨計(jì)算節(jié)點(diǎn)間容器網(wǎng)絡(luò)質(zhì)量情況,通過(guò)300組測(cè)試數(shù)據(jù)分析,虛擬化網(wǎng)絡(luò)傳輸速率折損率為1.23%,具體如圖3所示。
另外,使用Stress壓力測(cè)試工具分別將管理節(jié)點(diǎn)CPU負(fù)載達(dá)至20%、40%、60%、80%、90%,進(jìn)行30個(gè)高負(fù)載的200MCPU、200M內(nèi)存的測(cè)試容器創(chuàng)建、刪除操作,微服務(wù)原型系統(tǒng)運(yùn)行正常。
通過(guò)研究于國(guó)產(chǎn)微服務(wù)基礎(chǔ)架構(gòu)關(guān)鍵技術(shù),設(shè)計(jì)微服務(wù)原型系統(tǒng),有效支撐國(guó)產(chǎn)信息系統(tǒng)的構(gòu)建。一方面在使得國(guó)產(chǎn)信息系統(tǒng)在復(fù)雜度可控的前提下,將系統(tǒng)的各個(gè)微服務(wù)分散運(yùn)行于國(guó)產(chǎn)基礎(chǔ)硬件平臺(tái)之上,通過(guò)集群化思維可快速擴(kuò)充信息系統(tǒng)所依賴的基礎(chǔ)硬件平臺(tái),提升信息系統(tǒng)的運(yùn)行效率;另一方面使得國(guó)產(chǎn)信息系統(tǒng)具有良好的快速交付、升級(jí)擴(kuò)展、迭代重構(gòu)、容錯(cuò)恢復(fù)以及自主可控等特性,保障國(guó)產(chǎn)信息系統(tǒng)的安全、可靠運(yùn)行,滿足國(guó)產(chǎn)信息系統(tǒng)任務(wù)多樣化和快速更新迭代的需求。
作者單位:王玉琳、曹小靜、周春云 揚(yáng)州萬(wàn)方科技股份有限公司李智深 某部駐鎮(zhèn)江軍事代表室