上一篇博客整理了一些關於服務框架基礎知識的內容,這篇博客,從實際的生產需要出發,談談一個完善可用的服務框架,需要包含哪些功能。。。
PS:部分內容參考自《京東基礎架構建設之路》
一個完善可用的RPC服務框架,需要包含以下幾點:
框架組成 | 具體功能說明 |
服務注冊中心 | 服務框架基礎知識 |
管理端 | 接口管理+配置中心 |
統一的RPC框架 | 監控中心+分布式追蹤+服務治理+網關 |
管理端
1、接口管理
提供統一的接口管理和查詢入口,比如公共wiki或者類似swagger之類的系統。
功能:定義接口,包括接口描述、方法定義、字段定義甚至接口支持的最大並發數等信息。
2、配置中心
提供統一的配置管理,這里主要指服務端的一些相關配置。
功能:分組配置、路由策略、黑白名單、降級限流開關、timeout、重試次數可動態變化的參數。
優點:服務提供者和調用者不需重啟服務即可進行配置的變更。
例子:攜程開源的Apollo配置管理中心,或阿里開源的Nacos,目前在業內被多家互聯網及銀行金融類企業采用。
RPC框架
一、監控中心
1、監控服務主要關注接口維度和工程實例維度的數據,比如:JVM、內存、CPU、I/O等;
2、通過定時任務,上報不同接口的調用次數、耗時、異常信息以及相關服務的新建連接數、最大連接數、吞吐量等信息;
3、通過可視化等方式,實時展示相關服務的狀態,健康檢查、監控預警等;
二、分布式追蹤
與監控中心有所區別的是,全鏈路追蹤主要是以調用鏈的模式對服務進行調用關系的跟蹤和分析,一般通過埋點、agent探針等方式進行追蹤的數據輸出;
例子:全鏈路工具Skywalking,就是一個開源的調用鏈模式的追蹤分析工具,UI圖如下:
更多參考:Skywalking分布式追蹤系統
三、服務治理
1、服務路由
權重:機器配置高的權重高,配置低的權重低;還有根據服務的重要程度分配權重等;
IP路由:比如某些特定地址的機器只能訪問配置的幾台特定機器;
參數路由:比如根據方法名進行讀寫分類,或根據參數不同訪問不同的節點;
2、調用授權
應用授權:只有授權后的應用才可以調用某一組服務;
token:只有token校驗通過才可以調用對應的服務;
黑白名單:黑名單用戶無法訪問某些服務,白名單用戶可以不用鑒權既可訪問服務;
3、調用限流
服務端限流:服務端根據漏斗模型或者服務的最大處理能力進行限流措施,設置初始值以及根據訪問流量變化,同等步長遞增,最大訪問量為某個安全閾值即可;
客戶端限流:根據客戶端身份標識,比如不同會員等級,進行調用次數及是否優先提供服務的限流;
4、上線發布
灰度發布:一種平滑的上線發布方式,再次基礎上可以進行A/B測試。
藍綠發布:V1 版本稱為藍組,V2 版本稱為綠組,發布時通過 LB 一次性將流量從藍組直接切換到綠組。特點是全量切換,升級切換和回退速度快。
更多關於發布上線模式的內容,可參考這里:灰度發布、滾動發布、藍綠發布到底有什么區別?
5、限流降級
Mock:當服務不可用、異常等情況下返回配置好的數據,一般在測試場景使用率較高。
限流:通過在網關入口設定最大訪問閾值等方式,控制流入系統服務的請求,保證服務的正常可用。
降級:根據分配的服務權重,在系統壓力超過一定閾值時降低權重較低的服務權重,保證核心重要服務的可用性。
熔斷:設定timeout參數,當流入數據超過設定閾值,使其超時,重置連接,保證服務的可用性。
四、網關
網關為業務的接入層,RPC框架大部分情況下是內部調用,而網關可以提供以下功能:
統一的鑒權服務;
限流服務;
協議轉換:將外部訪問的請求協議轉換為內部統一的可處理的協議;
Mock:為測試提供服務、降級處理等;
其他:比如請求內容解析、請求封裝;
PS:服務框架屬於基礎架構范疇的中間件技術,需要保持適度的前瞻性;結合自己的現狀以及未來幾年的發展規划,進行技術選型,最好的是最適合自己的!
以為即為完善可用的服務框架相關知識,具體實踐請自行探索或參考其他資料。。。