王文兵 史春林 楊真
摘要:為了解決智慧黨建平臺系統(tǒng)功能復(fù)雜、開發(fā)維護(hù)成本高、可靠性和可擴展性低的問題,提出了基于微服務(wù)架構(gòu)的設(shè)計方案,將系統(tǒng)模塊功能拆分成微服務(wù)。平臺采用開源的Spring Cloud微服務(wù)框架,實現(xiàn)了服務(wù)注冊與發(fā)現(xiàn)、路由網(wǎng)關(guān)、容錯處理以及負(fù)載均衡等技術(shù),降低了系統(tǒng)的耦合性,提高了開發(fā)速度以及使平臺部署和擴展更加靈活。該平臺目前響應(yīng)迅速,運行穩(wěn)定,驗證了基于微服務(wù)架構(gòu)設(shè)計理念的有效性。
關(guān)鍵詞:微服務(wù);智慧黨建;虛擬容器;Spring Cloud
中圖分類號:TP311? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)09-0083-02
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
近些年,隨著信息化的持續(xù)進(jìn)步,敏捷開發(fā)和持續(xù)交付的設(shè)計理念也在持續(xù)的更新和拓展,此外,虛擬化技術(shù)和容器(Docker)技術(shù)也越來越成熟,軟件設(shè)計者越來越喜歡采用微服務(wù)架構(gòu)模式進(jìn)行開發(fā)設(shè)計。
目前阿里旗下的Dubbo服務(wù)化治理框架是國內(nèi)最出名的微服務(wù)框架,除了阿里外,很多國內(nèi)的互聯(lián)網(wǎng)公司也在使用。Spring Cloud是國外開源的微服務(wù)框架,包含了微服務(wù)開發(fā)所必需的多個組件,是相對成熟的技術(shù)框架。
為了解決智慧黨建平臺建設(shè)中存在的問題,本文采用開源的Spring Cloud微服務(wù)框架,將平臺中高度耦合的多個子系統(tǒng)拆分成多個離散的服務(wù),多個服務(wù)可以同步開發(fā),提高了系統(tǒng)的研發(fā)速度并且便于平臺功能的拓展。
1建設(shè)目標(biāo)
以黨組織和黨員等為核心,以黨務(wù)監(jiān)督管理和綜合服務(wù)為重點,優(yōu)化黨務(wù)業(yè)務(wù)流程,共享黨建網(wǎng)絡(luò)服務(wù),搭建信息化平臺。上傳下達(dá),落實中央和上級的精神、政策、決議等,使黨務(wù)活動更加規(guī)范,管理更加精準(zhǔn)、高效。進(jìn)一步實現(xiàn)動態(tài)了解黨員、黨組織的情況,實現(xiàn)“三會一課”、發(fā)展黨員、主題黨日等黨務(wù)活動的線上開展。
2微服務(wù)架構(gòu)介紹
精益、敏捷和持續(xù)交付是目前軟件開發(fā)的主流思想,配合DevOps技術(shù)的快速發(fā)展,傳統(tǒng)的單體式軟件開發(fā)架構(gòu)已無法適應(yīng)需求的快速變化,主要存在以下問題:
1)代碼維護(hù)成本高:項目中多個子系統(tǒng)和模塊高度耦合在一起,需要修改某一功能時,會涉及其他正在運行的功能,牽一發(fā)而動全身。
2)開發(fā)效率低:開發(fā)人員在同一個項目中編寫代碼,提交代碼時很容易引起沖突,解決起來非常麻煩。
3)部署難度大:單體式架構(gòu)修改一個小功能都必須重新部署整個系統(tǒng),其他正常的模塊不能正常提高服務(wù)。而且,隨著系統(tǒng)越來越復(fù)雜,部署花費的時間也更多。
4)可靠性低:出現(xiàn)的任何一點小問題都會讓整個系統(tǒng)崩潰。
5)擴展能力低:由于功能模塊耦合在一起,在增加新的功能時,需要對整個項目進(jìn)行改動。
微服務(wù)架構(gòu)是最近在軟件開發(fā)領(lǐng)域興起的新的軟件架構(gòu),把單體架構(gòu)中的各個模塊拆分成多個服務(wù),每個服務(wù)之間都是獨立的,都由獨立的進(jìn)程運行,彼此間采用輕量級的通信協(xié)議互通(RPC、HTTP等),可獨立伸縮拓展,并且每個服務(wù)都有其明確的邊界,不同的服務(wù)可由獨立的團隊開發(fā),也可以由不同的編程語言編寫。
微服務(wù)架構(gòu)相對于單體式架構(gòu),主要具備以下優(yōu)勢[1]:
1)復(fù)雜度可控:每個服務(wù)的業(yè)務(wù)邏輯清晰,代碼量小,功能簡單明了,開發(fā)和維護(hù)相對簡單,可以提高開發(fā)效率。
2)獨立部署:每個服務(wù)都有獨立的運行進(jìn)程,當(dāng)需要改變某一需求時,只需要重新編譯相關(guān)服務(wù),其他服務(wù)可正常使用。
3)異構(gòu):不同的團隊根據(jù)自身的優(yōu)勢可以選擇最適合的技術(shù)棧。
4)擴展:每個服務(wù)都可以獨立進(jìn)行細(xì)粒度的擴展。
5)容錯:系統(tǒng)故障被隔絕在獨自的服務(wù)進(jìn)程中,不影響其他服務(wù)的正常運行。
3微服務(wù)架構(gòu)核心組件和關(guān)鍵技術(shù)
通過對微服務(wù)架構(gòu)研究,其核心的功能包括服務(wù)容器、服務(wù)注冊發(fā)現(xiàn)、服務(wù)安全、服務(wù)通信、管理接口、限流容錯、序列化、日志管理和服務(wù)配置等,如圖1所示。
3.1服務(wù)注冊與發(fā)現(xiàn)
微服務(wù)把單個服務(wù)部署在Docker容器中,在運行時各個服務(wù)可能隨時被銷毀或克隆,所以需要一種機制去動態(tài)的發(fā)現(xiàn)服務(wù),這就要求服務(wù)提供者要注冊發(fā)布服務(wù)地址,注冊中心管理實例地址并提供心跳檢測機制,服務(wù)消費者通過注冊中心查詢可用的實例地址進(jìn)行調(diào)用。目前主要有兩種實現(xiàn)方案:
1)提供者服務(wù)發(fā)現(xiàn)
在提供者和使用者中間設(shè)置一個獨立運行的負(fù)載均衡器,其中存有所有服務(wù)的地址列表。當(dāng)使用者調(diào)用某個服務(wù)時,首先請求負(fù)載均衡器,負(fù)載均衡器收到請求后根據(jù)策略做負(fù)載均衡,然后將請求轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)。此方法使用者無須維護(hù)發(fā)現(xiàn)邏輯,實現(xiàn)起來比較簡單,但在負(fù)載均衡組件需要在系統(tǒng)中保持持續(xù)運行,而且在服務(wù)提供者和使用者之間增加了負(fù)載均衡器,增加了性能開銷,容易形成單點瓶頸。
2)使用者服務(wù)發(fā)現(xiàn)
該方案將負(fù)載均衡器集成到了使用者服務(wù)進(jìn)程內(nèi),此時所有使用者都要維護(hù)一份實例列表,該列表源自注冊中心。和方案一相比,服務(wù)提供者和使用者之間直接調(diào)用,不增加開銷,解決了單點瓶頸問題。
3.2路由網(wǎng)關(guān)
為了讓不同服務(wù)對外提供統(tǒng)一的API地址,需要設(shè)置路由網(wǎng)關(guān),我們只需要訪問網(wǎng)關(guān)地址即可訪問不同服務(wù)[2]。這樣就解決了前端調(diào)用服務(wù)地址管理復(fù)雜的問題。除此之外,網(wǎng)關(guān)路由還要提供身份認(rèn)證、權(quán)限校驗、流量控制、負(fù)載均衡等功能,如圖4所示。
3.3服務(wù)容錯
在微服務(wù)架構(gòu)中,各個服務(wù)間相互依賴,服務(wù)之間相互調(diào)用時可能會由于某個實例出現(xiàn)錯誤或響應(yīng)超時等原因?qū)е抡{(diào)用失敗,肯定會導(dǎo)致系統(tǒng)崩潰,所以需要進(jìn)行容錯處理。
本系統(tǒng)采用Hystrix[3]微服務(wù)容錯框架,其綜合考慮了多種因素,包括:錯誤、超時、服務(wù)隔離、負(fù)載等,它把服務(wù)調(diào)用邏輯進(jìn)行封裝,使其運行在單獨的線程中,通過資源隔離、熔斷器和調(diào)用超時三方面來保障微服務(wù)的可靠性。
4 智慧黨建平臺框架設(shè)計
充分借鑒其他區(qū)域“互聯(lián)網(wǎng)+黨建”、智慧黨建及黨建信息化建設(shè)經(jīng)驗,利用微服務(wù)架構(gòu)技術(shù),重點突出黨建區(qū)域工作特色,設(shè)計出符合省級黨建業(yè)務(wù)發(fā)展和符合安全的平臺架構(gòu)。按“層次化設(shè)計”思路,以展現(xiàn)交互、業(yè)務(wù)應(yīng)用、應(yīng)用支撐、信息資源、基礎(chǔ)設(shè)施為五層,黨建信息安全保障、黨建運維服務(wù)保障和黨建標(biāo)準(zhǔn)規(guī)范為三縱的總體架構(gòu)進(jìn)行設(shè)計,建成一個低耦合、高內(nèi)聚的黨建平臺,并且隨時可以對其進(jìn)行擴展。具體如圖5所示。
5結(jié)語
本文對目前流行的微服務(wù)架構(gòu)進(jìn)行了介紹,并在智慧黨建平臺的建設(shè)中進(jìn)行了應(yīng)用,相對于傳統(tǒng)的單體架構(gòu)開發(fā)模式具有十分明顯的優(yōu)勢,提高了開發(fā)效率,簡化了開發(fā)難度。目前,該平臺運行穩(wěn)定、響應(yīng)迅速、維護(hù)方便。
參考文獻(xiàn):
[1] 周建丁.七牛技術(shù)總監(jiān)肖勤:微服務(wù)架構(gòu)實踐經(jīng)驗分享[EB/OL].(2015-08-12)[2020-04-18].http://www.csdn.net/article/2015-08-07/2825412.[2015-08-12]
[2] 鄭彬彬.基于微服務(wù)的OJ系統(tǒng)重構(gòu)與優(yōu)化[D].上海:東華大學(xué),2017.
[3] 吳磊,湛健,宋麗華.微服務(wù)架構(gòu)在智能家居網(wǎng)關(guān)系統(tǒng)中的應(yīng)用研究[J].計算機技術(shù)與發(fā)展,2019,29(11):200-205.
【通聯(lián)編輯:代影】