吉承文,馬 超,張鐵鋼,朱 淼
(海南電網(wǎng)有限責(zé)任公司信息通信分公司,海南 ???570203)
國(guó)家對(duì)信息化建設(shè)非常重視,電網(wǎng)企業(yè)初步建立了數(shù)據(jù)處理中心云計(jì)算平臺(tái),提供基礎(chǔ)設(shè)施即服務(wù)(IaaS)、平臺(tái)即服務(wù)(PaaS)、軟件即服務(wù)(SaaS)三種服務(wù)模型[1]。云計(jì)算平臺(tái)的充分開(kāi)發(fā)和應(yīng)用,將云計(jì)算服務(wù)逐漸應(yīng)用到電網(wǎng)企業(yè)生產(chǎn)活動(dòng)中,有著重要的意義。
隨著電網(wǎng)業(yè)務(wù)功能的快速拓展,對(duì)應(yīng)用架構(gòu)提出了高內(nèi)聚、低耦合的要求。微服務(wù)架構(gòu)與容器虛擬化技術(shù)日趨成熟,滿(mǎn)足了這一需求。采用微服務(wù)架構(gòu)設(shè)計(jì)[2],運(yùn)用基于容器技術(shù)的容器即服務(wù)(CaaS)服務(wù)模型[3],能快速構(gòu)建云平臺(tái)基礎(chǔ)設(shè)施和開(kāi)發(fā)流程,實(shí)現(xiàn)自動(dòng)化部署和發(fā)布,降低系統(tǒng)運(yùn)維難度,有利于電網(wǎng)平臺(tái)的集成和擴(kuò)展。
微服務(wù)是一項(xiàng)在云中部署應(yīng)用和服務(wù)的架構(gòu)技術(shù)。微服務(wù)架構(gòu)技術(shù)根據(jù)業(yè)務(wù)上下文,選擇合適的語(yǔ)言、工具進(jìn)行構(gòu)建[2]。微服務(wù)運(yùn)行在各自隔離的環(huán)境中,是將業(yè)務(wù)功能進(jìn)行細(xì)粒度劃分的結(jié)果。微服務(wù)之間的交流采用輕量級(jí)通信機(jī)制進(jìn)行。
微服務(wù)架構(gòu)有別于傳統(tǒng)的單體式方案,也區(qū)別于傳統(tǒng)的SOA架構(gòu)。微服務(wù)架構(gòu)可將應(yīng)用拆分成多個(gè)核心功能,每個(gè)功能都被稱(chēng)為一項(xiàng)服務(wù)。每一個(gè)微服務(wù)的構(gòu)建和部署運(yùn)行是在各自獨(dú)立環(huán)境中的,這意味著各項(xiàng)微服務(wù)在工作和出現(xiàn)故障時(shí),被隔離在自身的環(huán)境中,錯(cuò)誤崩潰不會(huì)影響其他微服務(wù)業(yè)務(wù),最大程度地保證了系統(tǒng)穩(wěn)定與可靠。
虛擬化(Virtualization)是云計(jì)算技術(shù)的基礎(chǔ)架構(gòu)即服務(wù)層,其將各種資源如內(nèi)存、存儲(chǔ)、服務(wù)器及網(wǎng)絡(luò)等予以抽象、轉(zhuǎn)換后呈現(xiàn)出來(lái),提供資源的整合和數(shù)據(jù)資源按需分配,使得資源充分利用。
虛擬化技術(shù)能夠在一臺(tái)高性能服務(wù)器上構(gòu)建出多個(gè)虛擬操作系統(tǒng),最大化地利用硬件平臺(tái)所有資源。虛擬化是對(duì)用戶(hù)交付資源的一種呈現(xiàn)方式,交付給用戶(hù)的資源不再是物理實(shí)體,而是滿(mǎn)足用戶(hù)資源配置需求的邏輯資源[3]。
容器技術(shù)是虛擬化的服務(wù)器資源共享方式,可以按需構(gòu)建操作系統(tǒng)應(yīng)用實(shí)例。Docker是容器技術(shù)的典型應(yīng)用,圍繞Docker開(kāi)發(fā)的眾多項(xiàng)目,如容器操作系統(tǒng)、開(kāi)發(fā)平臺(tái)、開(kāi)發(fā)工具、大數(shù)據(jù)、系統(tǒng)監(jiān)測(cè)等[5,6],主要使用Docker應(yīng)用程序接口來(lái)進(jìn)行容器管理。
容器技術(shù)相較于虛擬機(jī)技術(shù),優(yōu)勢(shì)十分明顯。虛擬機(jī)將完整操作系統(tǒng)內(nèi)核進(jìn)行了虛擬化。Docker容器是更加輕量級(jí)的解決方案,未使用虛擬機(jī)操作系統(tǒng)來(lái)實(shí)現(xiàn)資源和環(huán)境的隔離。容器技術(shù)與虛擬機(jī)技術(shù)的優(yōu)勢(shì)主要在于[5,6]:
(1)容器技術(shù)的抽象層更為簡(jiǎn)單。Docker沒(méi)像虛擬機(jī)那樣將硬件資源虛擬化,容器內(nèi)運(yùn)行的服務(wù)都是直接使用物理機(jī)底層資源,在利用CPU和內(nèi)存方面占據(jù)顯著優(yōu)勢(shì)。
(2)容器技術(shù)的輕量級(jí)、高性能、便捷性。Docker直接利用宿主操作系統(tǒng)的內(nèi)核,而不需要?jiǎng)?chuàng)建虛擬機(jī)操作系統(tǒng),能夠節(jié)省大量的時(shí)間和資源消耗。利用Docker技術(shù)很容易創(chuàng)建成百上千的容器。
Docker容器化管理架構(gòu)如圖1所示。最上層電網(wǎng)業(yè)務(wù)連接著Docker客戶(hù)端。運(yùn)行在后臺(tái)的是Docker守護(hù)進(jìn)程,通過(guò)Docker服務(wù)器模塊接收Docker客戶(hù)端的請(qǐng)求,在Docker引擎中處理請(qǐng)求,根據(jù)處理情況創(chuàng)建特定的作業(yè)并運(yùn)行。Docker底層保證了PaaS層各Docker實(shí)例進(jìn)程間的安全性與隔離性,Docker實(shí)例都在獨(dú)立空間內(nèi)運(yùn)行。
在服務(wù)器上安裝Docker引擎,通過(guò)Docker將常用的應(yīng)用制作成鏡像,直接將業(yè)務(wù)參數(shù)配置完成,在發(fā)布和部署過(guò)程中大大提高效率。
圖1 Docker容器化管理架構(gòu)
海南電網(wǎng)數(shù)據(jù)中心云平臺(tái)的微服務(wù)框架是面向企業(yè)級(jí)集資源管理、微服務(wù)開(kāi)發(fā)、服務(wù)治理和服務(wù)運(yùn)維為一體的平臺(tái),幫助業(yè)務(wù)開(kāi)發(fā)和運(yùn)維人員快速構(gòu)建和發(fā)布微服務(wù)應(yīng)用,提供多樣化的運(yùn)維工具,保障服務(wù)的上線(xiàn)質(zhì)量。
微服務(wù)框架為企業(yè)構(gòu)建微服務(wù)應(yīng)用提供全生命周期管理,調(diào)用鏈跟蹤,數(shù)字化運(yùn)營(yíng),資源管理等能力,同時(shí)兼容主流開(kāi)源框架,低成本輕松接入。
微服務(wù)框架提供兼容SpringCloud的微服務(wù)開(kāi)放框架,滿(mǎn)足服務(wù)注冊(cè)、服務(wù)調(diào)用、動(dòng)態(tài)配置、服務(wù)鑒權(quán)、參數(shù)傳遞等功能。SpringCloud微服務(wù)框架原生應(yīng)用可無(wú)縫遷移到微服務(wù)框架平臺(tái),同時(shí)兼容Dubbo等主流開(kāi)源框架,通過(guò)簡(jiǎn)單的Jar包替換,即可使用微服務(wù)框架服務(wù),使用“零”門(mén)檻。
微服務(wù)框架提供從創(chuàng)建應(yīng)用到運(yùn)行應(yīng)用的全程管理,功能包括創(chuàng)建、刪除、部署、回滾、擴(kuò)容、下線(xiàn)、啟動(dòng)和停止應(yīng)用。微服務(wù)框架提供應(yīng)用分組來(lái)實(shí)現(xiàn)應(yīng)用的版本控制和灰度發(fā)布功能。
微服務(wù)框架提供構(gòu)建微服務(wù)所需的計(jì)算,網(wǎng)絡(luò),命名空間等資源的管理。微服務(wù)框架支持云主機(jī)和容器部署應(yīng)用,提供云主機(jī)和容器的創(chuàng)建、配置、銷(xiāo)毀等全生命周期管理。通過(guò)設(shè)定命名空間,可以將不同的命名空間的部署組內(nèi)的應(yīng)用進(jìn)行隔離,例如可以將開(kāi)發(fā)環(huán)境、聯(lián)調(diào)環(huán)境、測(cè)試環(huán)境的服務(wù)分別放到不同的命名空間中,實(shí)現(xiàn)三個(gè)環(huán)境相互隔離,互不影響。
微服務(wù)框架提供全面的監(jiān)控和分布式調(diào)用鏈分析工具,幫助用戶(hù)把握應(yīng)用上線(xiàn)后的運(yùn)行狀況。用戶(hù)可以根據(jù)時(shí)間范圍和服務(wù)名等條件來(lái)查詢(xún)一組調(diào)用鏈。調(diào)用鏈詳情顯示了請(qǐng)求經(jīng)過(guò)每個(gè)服務(wù)的層次關(guān)系和耗時(shí)情況等信息。
電網(wǎng)系統(tǒng)業(yè)務(wù)規(guī)模大,業(yè)務(wù)用戶(hù)眾多,業(yè)務(wù)交互需求多樣化,采用微服務(wù)和容器框架不僅能讓多租戶(hù)共用一個(gè)應(yīng)用程序或運(yùn)算環(huán)境,實(shí)現(xiàn)租戶(hù)間應(yīng)用程序環(huán)境的隔離和數(shù)據(jù)隔離,且增加多用戶(hù)使用云平臺(tái)的便捷性,完成電網(wǎng)數(shù)據(jù)的深度挖掘和價(jià)值利用。
本文研究將傳統(tǒng)業(yè)務(wù)系統(tǒng)架構(gòu)轉(zhuǎn)換成微服務(wù)架構(gòu)的系統(tǒng),提出多租戶(hù)模型,結(jié)合負(fù)載均衡、容錯(cuò)管理和服務(wù)監(jiān)控技術(shù),用微服務(wù)技術(shù)將系統(tǒng)應(yīng)用解耦,用容器技術(shù)將系統(tǒng)功能獨(dú)立,充分提高系統(tǒng)可靠性。
基于微服務(wù)架構(gòu)的分布式系統(tǒng),其業(yè)務(wù)應(yīng)用需要更好的環(huán)境隔離,更細(xì)力度的計(jì)算資源隔離和調(diào)度能力,本文采用微服務(wù)與容器構(gòu)建多租戶(hù)服務(wù)平臺(tái),如圖2所示。架構(gòu)上層提供主機(jī)、網(wǎng)絡(luò)及其他配套資源等基礎(chǔ)設(shè)施微服務(wù)。容器虛擬化資源服務(wù)是架構(gòu)底層,提供存儲(chǔ)、權(quán)限管理等綜合微服務(wù)。架構(gòu)的多租戶(hù)之間相互隔離,微服務(wù)相互獨(dú)立,數(shù)據(jù)開(kāi)發(fā)和數(shù)據(jù)應(yīng)用自由。資源管理、數(shù)據(jù)服務(wù)、權(quán)限管理、監(jiān)控服務(wù)等由公共服務(wù)區(qū)的微服務(wù)提供。
圖2 基于微服務(wù)與容器的多租戶(hù)架構(gòu)
平臺(tái)是多租戶(hù)數(shù)據(jù)服務(wù)監(jiān)控及管理體系,為擴(kuò)大平臺(tái)的適用和靈活應(yīng)用,多租戶(hù)數(shù)據(jù)微服務(wù)平臺(tái)應(yīng)具備以下特性:
(1)按需使用:租戶(hù)對(duì)資源或服務(wù)可以自助配置并自動(dòng)化使用。
(2)廣泛接入:平臺(tái)支持與兼容多種設(shè)備、協(xié)議、接口和安全技術(shù),具備被廣泛訪(fǎng)問(wèn)的能力。
(3)資源管理:實(shí)現(xiàn)多租戶(hù)資源池化和隔離。
(4)彈性擴(kuò)展:自動(dòng)、透明地?cái)U(kuò)展資源。
(5)用量統(tǒng)計(jì):平臺(tái)要對(duì)租戶(hù)的實(shí)際使用或被授予資源能精確記錄。
(6)可恢復(fù)性:平臺(tái)服務(wù)要具備高可用和自愈設(shè)計(jì),給租戶(hù)提供故障恢復(fù)能力。
微服務(wù)架構(gòu)和容器等技術(shù)逐漸發(fā)展成為較為領(lǐng)先的設(shè)計(jì)思想,本文探討了基于微服務(wù)與容器架構(gòu)在電力業(yè)務(wù)系統(tǒng)應(yīng)用。微服務(wù)架構(gòu)與容器虛擬化的服務(wù)組件提高了靈活性、可靠性。微服務(wù)架構(gòu)化的電力業(yè)務(wù)系統(tǒng)實(shí)踐,體現(xiàn)業(yè)務(wù)系統(tǒng)具有較好的交互性、可維護(hù)性和可擴(kuò)展性。