王文兵 史春林 楊真



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