1. 程式人生 > >分布式服務框架(二)

分布式服務框架(二)

無限 快速 異常 net iyu 成熟 基礎上 管理平臺 感知

一、分布式服務框架其他組成

  上一節《分布式服務框架(一)》講述了RPC發展到SOA的過程,常見的SOA服務治理方案,以及分布式系統中常見的專業名詞,這部分其實只是涉及到了一個分布式系統架構的輪廓,真正一個系統的構建,還需要很多模塊互幫互助,協同工作和其他相關平臺的搭建。

  一個大型,穩健,成熟的分布式系統的背後,往往會涉及眾多支撐運作的系統,我們統稱這部分系統為分布式系統架構中的基礎設施,下面將介紹一些常見甚至必用的基礎設施。

  (1)CI/CD平臺:即持續集成/持續交付,持續集成是指軟件個人研發的部分向軟件整體部分交付,頻繁進行集成以便更快地發現其中的錯誤,持續交付在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境的「類生產環境」(此解釋來自https://blog.csdn.net/eugenelee2096/article/details/73332615)說得這麽復雜,無非就是開發代碼過程中持續的提交,然後進行持續的代碼掃描,單元測試,編譯構建,完成如上流水線後迅速的部署到目標環境上允許的過程。

  (2)ConfigCenter:即配置中心,為各應用的所有環境提供了一個中心化的外部配置,為服務端和客戶端提供了分布式系統的外部化配置支持。

  (3)Web Portal/IDE:集成應用配置,管理平臺的統一入口和開發IDE。

  (4)Deploy Center:部署中心,所有的服務,無論是公共SAAS服務還是業務服務,開發完成後都需部署到對應的區域和環境上,部署中心提供了發布應用包的平臺供開發者進行發包部署操作,或提供接口供CI/CD的接入。

  (5)公共SAAS:即整個分布式系統中公用的服務,常見的有權限服務,數據字典,國際化等

  (6)服務註冊中心:服務註冊中心,是分布式服務系統中的一個重要組成模塊,管理Provider的Manager,在實際的運行環境中,服務註冊中心Registry被動通知或Consumer主動詢問,在Provider有節點宕機或新增節點時,客戶端也可實時感知到,從而避免了某個Provider被無限調用或是無限閑置

  (7)Maven,Git倉庫管理:Maven倉庫用來存儲和管理開發和部署應用過程中所需的JAR或ZIP文件,Git用來存儲開發者代碼,提供了代碼合成,分支管理等功能。

  (8)日誌中心:服務運行過程中,不可避免的會出現各種問題,如何快速定位並分析清楚這些問題的根因,並提出有效的解決方案,日誌在這其中扮演了很重要的角色,日誌中心通過收集Consumer或Provider產生的日誌,為用戶查詢下載日誌提供了可視化平臺。

  (9)監控中心:接收來自Consumer和Provider異步上報的性能監控數據,對有風險的節點發出告警

  (10)事件中心:事件中心是高度可縮放的數據流式處理平臺和事件引入服務,可以處理和存儲分布式軟件和設備生成的事件、數據或遙測

二、完整的分布式系統設計

  以上所述基礎設施都是分布式系統中重要或不可缺少的部分,怎麽將這些基礎設施整合到一起,使整個分布式系統能夠協調運作,下面展示了個人對於這方面的理解。

  開發者接入到對應的IDE開發平臺,選擇對應的產品(Maven或Gradle)構建工程,通過分支管理等措施的落實,進行代碼的編寫,提交,合並,之後提交CI平臺進行代碼檢查,編譯構建,單元測試並部署到部署中心,也可脫離CI進行手動部署。

  不管開發者開發的是公共SAAS還是業務服務,都會通過部署中心部署到對應的環境區域,業務服務從配置中心拉取應用配置信息,將服務註冊發布到註冊中心,並可任意調用環境中周邊的公共SAAS服務。

  服務在運行過程中,將日誌以異步消息的形式上傳到日誌中心,此處也可由日誌中心進行主動收集。同時將性能等方面的數據上報到監控中心,監控中心發現異常後,會對用戶發出告警。監控中心還包括一個事件上報模塊,收集容器的運行狀況和產生的事件等數據,對服務的運行作出必要的決策。

  技術分享圖片

分布式服務框架(二)