服務治理主要針對於當前分佈式架構下多服務、微服務等。
服務是分佈式系統下的一個不大不小的部分,有了服務的組成,整個系統才能活起來。
隨著業務的增長,服務不能一味地隨之增長,需要管理、治理。沒有服務治理的分佈式系統不一定會失敗,但是隨著業務的增長,這個系統一定會很痛苦。
服務治理的目標
服務治理嚴格意義上應該劃分為三個階段,包含了服務的整個生命週期。
其中服務設計期主要針對於服務的設計期、開發期,而服務運行期主要針對於服務上線後等運行情況,最後服務持續治理則是堅持了“分久必合”的理念,將淘汰制進行到底。
下面講講三個時期需要完整的工作:
服務設計期:
- 方案評審、開發測試審查、簽發認證、服務可發現
- 策略管理
- 合約定義、商談
- 標準化服務質量協議
服務運行期:
- 系統記錄:記錄交換的信息
- 服務管理系統:控管、配置服務以及運行階段的組件,根據異常狀況重新配置環境
- 服務監控系統:採集數據,可視化,提供變配證據
- 服務質量保證系統:增強通訊中的消息和運行階段策略、安全性、可靠性、事務性、稽核等
服務持續治理:
- 服務資產管理:評估、分析服務倉庫,識別服務可重用的機率、協助進行資產整合、減少冗餘的服務功能
根據上述目標,我們可以確定:
- 服務治理貫穿了服務的整個生命週期,包括開發前的設計、開發以及測試、運行、以及後續管理。
- 服務設計期主要針對於服務的設計評審以及標準的制定。
- 服務治理運行期的重點放在管理和監控,為了運行良好的目標,通過數據分析運行狀況,通過自動化消除異常、變配等。
- 服務治理後期的重點放在消除冗餘。
服務治理平臺設計
結合現在大多架構的註冊中心、監控中心,可構設出大概的架構圖:
結合Dubbo分析
在服務治理平臺的開發過程中,開發難點和設計服務複雜度應該放在了服務註冊、服務監控上。
Dubbo是一個高性能服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案,使得應用可通過高性能RPC實現服務的輸出和輸入功能,和Spring框架可以無縫集成。
問題分析
隨著業務不斷增長,為了追求更高的性能支撐業務,集群的引入使得服務架構的複雜度大大提升。龐大的集群容易出現各種各樣的問題:
- 過多的服務URL配置困難
- 負載均衡分配節點壓力過大的情況下也需要部署集群
- 服務依賴混亂,啟動順序不清晰
- 過多服務導致性能指標分析難度較大,需要監控
架構分析
Dubbo註冊中心和監控中心的引入是服務治理的關鍵。
註冊中心的關鍵點:
- 服務提供者向註冊中心註冊其提供的服務
- 服務消費者向註冊中心獲取服務提供者地址列表,同時加上負載均衡的算法選擇服務提供者
監控中心的關鍵點:
- 服務消費者和提供者累計調用次數和調用時間,定時發送統計數據到監控中心
業務引入架構後,必須要保證的是,對當前業務的穩定性的影響只能是正面影響或者無影響,不能是負面影響。
考慮該架構對穩定性的影響:
- 註冊中心宕機情況下,消費者在本地緩存了提供者列表,業務暫時不受影響,但是不能再註冊新的服務
- 監控中心宕機情況下,不影響服務,隻影響部分採樣數據
- 服務提供方宕機後,通過負載均衡算法可將請求往別的同服務的提供方發送,對健壯性起正面作用
註冊中心和監控中心的引入在很大程度上提高了運行期的穩定性,對應了服務治理的工作。
考慮架構對其他方面的影響:
- 可動態增加服務,由註冊中心統一動態分配
- 可動態增加消費方,由註冊中心統一動態分配
由此可見註冊中心的引入提高了伸縮性,對應了服務治理運行期所需工作。
而監控中心的引入,數據的採集和分析得到的收益也是明顯的,對應的是服務治理運行期的服務監控以及服務治理持續治理下的服務資產管理。
閱讀更多 JAVA技術程序員 的文章