晉榮 王瑞 程洪閃
摘要:微服務(wù)架構(gòu)是一種將單應(yīng)用程序作為一套小型服務(wù)開(kāi)發(fā)的方法,每種應(yīng)用程序都在自己的進(jìn)程中運(yùn)行,并與輕量級(jí)機(jī)制進(jìn)行通信。敘述了微服務(wù)架構(gòu)的工作原理,描述了微服務(wù)架構(gòu)的功能特點(diǎn),并與傳統(tǒng)單塊軟件架構(gòu)進(jìn)行了對(duì)比;介紹了微服務(wù)架構(gòu)的功能分層及各層的功能特點(diǎn),結(jié)合微服務(wù)架構(gòu)在綜合運(yùn)維系統(tǒng)中的實(shí)際應(yīng)用詳細(xì)闡述了微服務(wù)架構(gòu)技術(shù)的應(yīng)用情況。在綜合運(yùn)維系統(tǒng)中采用微服務(wù)架構(gòu)可以實(shí)現(xiàn)功能的快速迭代,應(yīng)用的敏捷開(kāi)發(fā)。
關(guān)鍵詞:微服務(wù);綜合運(yùn)維
中圖分類號(hào):TP393文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2019)13-56-3
0引言
互聯(lián)網(wǎng)、云計(jì)算技術(shù)飛速發(fā)展,信息網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大,用戶對(duì)信息化系統(tǒng)服務(wù)的需求越發(fā)豐富?;趥鹘y(tǒng)的單體架構(gòu)建設(shè)的運(yùn)維平臺(tái),面臨著維護(hù)成本高、完善升級(jí)靈活性差、服務(wù)功能不夠豐富等弊端。采用微服務(wù)技術(shù)架構(gòu)打造新一代的綜合運(yùn)維管理平臺(tái),完成綜合運(yùn)維單體架構(gòu)向微服務(wù)架構(gòu)的轉(zhuǎn)變,實(shí)現(xiàn)網(wǎng)絡(luò)管理向運(yùn)維服務(wù)的升級(jí),從而達(dá)到從管理者向服務(wù)者的角色轉(zhuǎn)變。
1微服務(wù)架構(gòu)
微服務(wù)架構(gòu)作為一種新型的架構(gòu)模式,提倡將單一應(yīng)用程序劃分成一組小顆粒的、相互獨(dú)立的、可采用分布式部署的服務(wù),服務(wù)的開(kāi)發(fā)、部署在各自獨(dú)立的進(jìn)程中,服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價(jià)值,服務(wù)與服務(wù)間采用輕量級(jí)的通信機(jī)制互相溝通(RESTful API),服務(wù)可獨(dú)立擴(kuò)展伸縮,每個(gè)服務(wù)定義了明確的邊界,不同的服務(wù)甚至可以用不同的編程語(yǔ)言來(lái)實(shí)現(xiàn),由獨(dú)立的團(tuán)隊(duì)來(lái)維護(hù)。微服務(wù)技術(shù)架構(gòu)如圖1所示。
相對(duì)于傳統(tǒng)的單體架構(gòu)應(yīng)用,微服務(wù)架構(gòu)具有如下特點(diǎn):
①服務(wù)能夠獨(dú)立構(gòu)建、獨(dú)立部署、按需獨(dú)立擴(kuò)展,賦予系統(tǒng)靈活的組織方式和發(fā)布節(jié)奏,使得快速交付和柔性應(yīng)用成為可能;
②松耦合、單一職責(zé)、基于限界上下文的一種SOA的落地實(shí)現(xiàn),簡(jiǎn)化了單體架構(gòu)的業(yè)務(wù)復(fù)雜性,根據(jù)業(yè)務(wù)需求對(duì)大型項(xiàng)目進(jìn)行拆分,方便項(xiàng)目并行研發(fā);
③受業(yè)務(wù)驅(qū)動(dòng),不斷演進(jìn)的架構(gòu),降低了系統(tǒng)維護(hù)和業(yè)務(wù)擴(kuò)展的成本,方便后期需求和功能的不斷迭代升級(jí),同時(shí)也降低了錯(cuò)誤排查的難度;
④通過(guò)分解巨大單體式應(yīng)用為多個(gè)服務(wù)方法解決了復(fù)雜性問(wèn)題,每個(gè)微服務(wù)相對(duì)較小,方便根據(jù)不同的服務(wù)性能要求選擇匹配的技術(shù);
⑤每個(gè)單體應(yīng)用不局限于固定的技術(shù)棧,開(kāi)發(fā)者可以自由選擇開(kāi)發(fā)技術(shù),提供API服務(wù),實(shí)現(xiàn)技術(shù)的多元化選型;
⑥單一職責(zé)功能、服務(wù)的粒度小,每個(gè)服務(wù)針對(duì)單一的業(yè)務(wù)能力進(jìn)行封裝都只關(guān)注于一個(gè)業(yè)務(wù)功能,從而更有可能對(duì)某些方面的服務(wù)做成精品;
⑦易于規(guī)模化開(kāi)發(fā),多個(gè)開(kāi)發(fā)團(tuán)隊(duì)可以并行開(kāi)發(fā),每個(gè)團(tuán)隊(duì)負(fù)責(zé)一項(xiàng)服務(wù);
⑧改善故障隔離,一個(gè)服務(wù)宕機(jī)不會(huì)影響其他服務(wù)。
微服務(wù)架構(gòu)與傳統(tǒng)單塊軟件架構(gòu)對(duì)比如圖2所示。
相對(duì)于單塊架構(gòu),微服務(wù)架構(gòu)在系統(tǒng)升級(jí)、業(yè)務(wù)擴(kuò)容、功能豐富等方面具有絕對(duì)的優(yōu)勢(shì),便于用戶進(jìn)行后期長(zhǎng)期建設(shè)的業(yè)務(wù)系統(tǒng),具備外掛式接入管理能力。
2架構(gòu)設(shè)計(jì)
在進(jìn)行微服務(wù)架構(gòu)設(shè)計(jì)時(shí),將系統(tǒng)劃分為應(yīng)用層、業(yè)務(wù)服務(wù)層、基礎(chǔ)服務(wù)層、微服務(wù)中間件層和監(jiān)視層。其中,應(yīng)用層和業(yè)務(wù)層是業(yè)務(wù)價(jià)值體現(xiàn)的關(guān)鍵。應(yīng)用層“以用戶為中心”,專注于用戶體驗(yàn)與業(yè)務(wù)功能;服務(wù)層通過(guò)將系統(tǒng)專業(yè)化分工,采用服務(wù)化方式,提供“去中心化”服務(wù)調(diào)用,并通過(guò)服務(wù)編排組合,可快速滿足多應(yīng)用多前端的功能實(shí)現(xiàn)。微服務(wù)平臺(tái)主要包含基礎(chǔ)服務(wù)層、微服務(wù)中間件層和監(jiān)控層等功能。
(1)基礎(chǔ)服務(wù)層
該層是服務(wù)重用和系統(tǒng)快速搭建的基礎(chǔ)。微服務(wù)劃分本質(zhì)上是對(duì)業(yè)務(wù)功能進(jìn)行解耦并獨(dú)立部署,而具有共性業(yè)務(wù)特征的功能進(jìn)一步內(nèi)聚和抽取,形成基礎(chǔ)服務(wù)中心,在系統(tǒng)內(nèi)或系統(tǒng)間的多個(gè)微服務(wù)中共享使用。基礎(chǔ)服務(wù)中心包括認(rèn)證中心、調(diào)度中心、日志中心等公共服務(wù)應(yīng)用。
(2)微服務(wù)中間件層
微服務(wù)中間件層主要實(shí)現(xiàn)服務(wù)的統(tǒng)一管理,為服務(wù)間的互相協(xié)作運(yùn)行提供技術(shù)保障,是架構(gòu)實(shí)現(xiàn)的技術(shù)支撐。
①服務(wù)注冊(cè)中心:通過(guò)集中地注冊(cè)管理機(jī)制,統(tǒng)一管理服務(wù)名稱與服務(wù)調(diào)用地址之間的映射關(guān)系,實(shí)現(xiàn)服務(wù)的自動(dòng)注冊(cè)和發(fā)現(xiàn),幫助服務(wù)調(diào)用者獲取服務(wù)提供者的地址信息。
②服務(wù)網(wǎng)關(guān):實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)、動(dòng)態(tài)路由等功能,可以降低服務(wù)演進(jìn)過(guò)程中地址變動(dòng)和增長(zhǎng)帶來(lái)的更新成本;也可以實(shí)現(xiàn)協(xié)議轉(zhuǎn)發(fā),能提高基礎(chǔ)服務(wù)中心的協(xié)議擴(kuò)展性。
③服務(wù)負(fù)載均衡:通過(guò)水平伸縮實(shí)現(xiàn)服務(wù)調(diào)用請(qǐng)求的負(fù)載均衡,有效分散單節(jié)點(diǎn)的計(jì)算負(fù)載,實(shí)現(xiàn)服務(wù)的彈性擴(kuò)展。
④服務(wù)容錯(cuò):構(gòu)建流量控制、故障隔離、斷路器等容錯(cuò)與修復(fù)機(jī)制,避免某個(gè)服務(wù)不可用時(shí),導(dǎo)致故障蔓延,并最終造成整個(gè)系統(tǒng)癱瘓的風(fēng)險(xiǎn)。
⑤分布式緩存:利用鍵值數(shù)據(jù)庫(kù)基于多臺(tái)PC服務(wù)器,為分布式環(huán)境下應(yīng)用對(duì)象緩存、狀態(tài)緩存等場(chǎng)景提供統(tǒng)一的分布式緩存解決方案。
(3)監(jiān)控層
監(jiān)控層是系統(tǒng)穩(wěn)定運(yùn)行的保障,隨著系統(tǒng)服務(wù)數(shù)量逐步增多,服務(wù)之間的調(diào)用關(guān)系越來(lái)越復(fù)雜,這也對(duì)微服務(wù)架構(gòu)下如何保障系統(tǒng)可靠運(yùn)行提出了新挑戰(zhàn)。通過(guò)對(duì)應(yīng)用、服務(wù)、資源、服務(wù)調(diào)用鏈路等進(jìn)行監(jiān)控,能夠?qū)崿F(xiàn)微服務(wù)架構(gòu)下請(qǐng)求可追溯、問(wèn)題可預(yù)警、伸縮有依據(jù)。其主要功能包括應(yīng)用概覽、應(yīng)用詳情、環(huán)境參數(shù)、服務(wù)狀況、SQL監(jiān)控監(jiān)控、服務(wù)調(diào)用鏈分析等,同時(shí)也為開(kāi)發(fā)運(yùn)維一體化提供了重要支撐工具。
3系統(tǒng)開(kāi)發(fā)實(shí)踐
綜合運(yùn)維系統(tǒng)是一套建立在專業(yè)網(wǎng)管基礎(chǔ)之上的監(jiān)控維護(hù)管理平臺(tái),經(jīng)過(guò)十多年的建設(shè)和應(yīng)用,系統(tǒng)越來(lái)越笨重、越來(lái)越難以適應(yīng)靈活多變的網(wǎng)絡(luò)結(jié)構(gòu)和不斷增長(zhǎng)的業(yè)務(wù)需求。因此,基于微服務(wù)架構(gòu),建設(shè)一套分布式綜合運(yùn)維平臺(tái),滿足敏捷部署、快速交付、靈活升級(jí)的應(yīng)用是設(shè)計(jì)的主導(dǎo)思想。
綜合運(yùn)維系統(tǒng)應(yīng)用微服務(wù)技術(shù)架構(gòu),橫向拆分運(yùn)維系統(tǒng)功能和業(yè)務(wù),實(shí)現(xiàn)注冊(cè)中心、告警管理、測(cè)試管理、性能監(jiān)測(cè)、事件通知和值勤管理等微服務(wù),向通信指揮和網(wǎng)絡(luò)運(yùn)維人員提供穩(wěn)定、可靠的監(jiān)控服務(wù)集群,綜合運(yùn)維系統(tǒng)的微服務(wù)組成如圖3所示。
綜合運(yùn)維系統(tǒng)按照功能和業(yè)務(wù)的維度劃分為多個(gè)微服務(wù)模塊,每個(gè)微服務(wù)單獨(dú)運(yùn)行,單獨(dú)部署,各個(gè)微服務(wù)之間通過(guò)API調(diào)用實(shí)現(xiàn)互聯(lián)互通。
按照層次化設(shè)計(jì)思想,綜合運(yùn)維系統(tǒng)分為接入層、業(yè)務(wù)層和呈現(xiàn)層3層進(jìn)行了功能設(shè)計(jì)。
(1)接入層
系統(tǒng)接入層實(shí)現(xiàn)被管系統(tǒng)的接入和數(shù)據(jù)采集能力。實(shí)現(xiàn)與其他系統(tǒng)和設(shè)備的連接,并通過(guò)接口獲取狀態(tài)上報(bào)數(shù)據(jù)和采集數(shù)據(jù)。包括對(duì)光纖網(wǎng)、衛(wèi)通網(wǎng)、IP網(wǎng)設(shè)備以及其他業(yè)務(wù)系統(tǒng)狀態(tài)數(shù)據(jù)的接入和數(shù)據(jù)采集。每一種不同的被管對(duì)象增加一個(gè)單獨(dú)的適配器服務(wù),保證任何一個(gè)適配器微服務(wù)的正常或異常不影響其他適配器服務(wù)模塊。
(2)業(yè)務(wù)層
業(yè)務(wù)層由一組實(shí)現(xiàn)不同業(yè)務(wù)的微服務(wù)組成,通過(guò)協(xié)同處理業(yè)務(wù)將接入層獲取的數(shù)據(jù)進(jìn)行處理,綜合分析和挖掘,存儲(chǔ)并按需進(jìn)行數(shù)據(jù)融合處理。包括對(duì)資源、設(shè)備、運(yùn)維、流量和測(cè)試等相關(guān)數(shù)據(jù)的處理,實(shí)現(xiàn)告警監(jiān)測(cè)、通信資源管理、故障分析以及流程管理等功能。
(3)呈現(xiàn)層
呈現(xiàn)層主要面向用戶提供操作入口和全景監(jiān)視視圖。
①在系統(tǒng)開(kāi)發(fā)階段,一是基于開(kāi)源軟件,快速構(gòu)建了服務(wù)注冊(cè)中心、服務(wù)網(wǎng)關(guān)、服務(wù)負(fù)載均衡、服務(wù)容錯(cuò)和分布式緩存等中間件,自主研發(fā)了服務(wù)監(jiān)控平臺(tái),為系統(tǒng)開(kāi)發(fā)提供了運(yùn)行基礎(chǔ)。
②抽取分布式調(diào)度服務(wù)作為基礎(chǔ)服務(wù),采用任務(wù)“統(tǒng)一調(diào)度管理、分布式執(zhí)行”模式,提供各應(yīng)用的統(tǒng)一管理和應(yīng)用件協(xié)作服務(wù),并可為其他項(xiàng)目建設(shè)重用。
③基于Maven開(kāi)源工具,定制了開(kāi)發(fā)環(huán)境,包括開(kāi)發(fā)工具、開(kāi)發(fā)模板、構(gòu)建倉(cāng)庫(kù)等,實(shí)現(xiàn)了開(kāi)箱即用、免系統(tǒng)環(huán)境配置、一鍵啟動(dòng)及快速構(gòu)建等特點(diǎn)。在開(kāi)發(fā)過(guò)程中,通過(guò)微服務(wù)架構(gòu)設(shè)計(jì),提高了系統(tǒng)的靈活性和可擴(kuò)展性,在業(yè)務(wù)需求漸清晰的情況下,實(shí)現(xiàn)功能快速迭代,應(yīng)用敏捷開(kāi)發(fā)。
4結(jié)束語(yǔ)
本文結(jié)合實(shí)際開(kāi)發(fā)項(xiàng)目,針對(duì)綜合運(yùn)維系統(tǒng)中存在的諸多難題和相應(yīng)的解決策略進(jìn)行分析。通過(guò)實(shí)驗(yàn)證明了微服務(wù)架構(gòu)的服務(wù)系統(tǒng)可以提高用戶體驗(yàn),降低開(kāi)發(fā)成本,實(shí)現(xiàn)高可用性,具有可持續(xù)發(fā)展的潛力。本文的實(shí)踐案例為大型信息網(wǎng)絡(luò)資源管理及海量數(shù)據(jù)挖掘系統(tǒng)綜合運(yùn)維管理平臺(tái)研發(fā)應(yīng)用提供了參考,隨著互聯(lián)網(wǎng)思維和云平臺(tái)部署越來(lái)越趨勢(shì)化,微服務(wù)架構(gòu)在應(yīng)用系統(tǒng)的建設(shè)中將體現(xiàn)出越來(lái)越大的價(jià)值。
參考文獻(xiàn)
[1]王磊.微服務(wù)架構(gòu)與實(shí)踐[M].北京:電子工業(yè)出版社,2015.
[2]馬越,黃剛.基于Docker的應(yīng)用軟件虛擬化研究[J].軟件, 2015,36(3):10-14.
[3] Thones J.Microservices[J].IEEE Software,2015,32(1):116.
[4] Videla A,Williams J J W.高效部署分布式消息隊(duì)列[M].汪佳南,譯.北京:電子工業(yè)出版社,2015.
[5]李勇.分布式Web服務(wù)發(fā)現(xiàn)機(jī)制研究[D].北京:北京郵電大學(xué),2008.
[6]孫海洪.微服務(wù)架構(gòu)和容器技術(shù)應(yīng)用[J].金融電子化,2016(5):63-64.
計(jì)算機(jī)與網(wǎng)絡(luò)2019年13期