如何設計一個完善可用的服務框架
- 2019 年 12 月 5 日
- 筆記
上一篇文章整理了一些關於服務框架基礎知識的內容,這篇文章,從實際的生產需要出發,談談一個完善可用的服務框架,需要包含哪些功能。。。
PS:部分內容參考自《京東基礎架構建設之路》
一個完善可用的RPC服務框架,需要包含以下幾點:
框架組成 |
具體功能說明 |
---|---|
服務註冊中心 |
https://www.cnblogs.com/imyalost/p/10274797.html |
管理端 |
介面管理+配置中心 |
統一的RPC框架 |
監控中心+分散式追蹤+服務治理+網關 |
管理端
1、介面管理
提供統一的介面管理和查詢入口,比如公共wiki或者類似swagger之類的系統。
功能:定義介面,包括介面描述、方法定義、欄位定義甚至介面支援的最大並發數等資訊。
2、配置中心
提供統一的配置管理,這裡主要指服務端的一些相關配置。
功能:分組配置、路由策略、黑白名單、降級限流開關、timeout、重試次數可動態變化的參數。
優點:服務提供者和調用者不需重啟服務即可進行配置的變更。
例子:攜程開源的Apollo配置管理中心,或阿里開源的Nacos,目前在業內被多家互聯網及銀行金融類企業採用。
RPC框架
一、監控中心
1、監控服務主要關注介面維度和工程實例維度的數據,比如:JVM、記憶體、CPU、I/O等;
2、通過定時任務,上報不同介面的調用次數、耗時、異常資訊以及相關服務的新建連接數、最大連接數、吞吐量等資訊;
3、通過可視化等方式,實時展示相關服務的狀態,健康檢查、監控預警等;
二、分散式追蹤
與監控中心有所區別的是,全鏈路追蹤主要是以調用鏈的模式對服務進行調用關係的跟蹤和分析,一般通過埋點、agent探針等方式進行追蹤的數據輸出;
例子:全鏈路工具Skywalking,就是一個開源的調用鏈模式的追蹤分析工具,UI圖如下:

更多參考:https://www.jianshu.com/p/2fd56627a3cf
三、服務治理
1、服務路由
權重:機器配置高的權重高,配置低的權重低;還有根據服務的重要程度分配權重等;
IP路由:比如某些特定地址的機器只能訪問配置的幾台特定機器;
參數路由:比如根據方法名進行讀寫分類,或根據參數不同訪問不同的節點;
2、調用授權
應用授權:只有授權後的應用才可以調用某一組服務;
token:只有token校驗通過才可以調用對應的服務;
黑白名單:黑名單用戶無法訪問某些服務,白名單用戶可以不用鑒權既可訪問服務;
3、調用限流
服務端限流:服務端根據漏斗模型或者服務的最大處理能力進行限流措施,設置初始值以及根據訪問流量變化,同等步長遞增,最大訪問量為某個安全閾值即可;
客戶端限流:根據客戶端身份標識,比如不同會員等級,進行調用次數及是否優先提供服務的限流;
4、上線發布
灰度發布:一種平滑的上線發布方式,再次基礎上可以進行A/B測試。
藍綠髮布:V1 版本稱為藍組,V2 版本稱為綠組,發布時通過 LB 一次性將流量從藍組直接切換到綠組。特點是全量切換,升級切換和回退速度快。

更多關於發布上線模式的內容,可參考這裡:https://www.cnblogs.com/apanly/p/8784096.html
5、限流降級
Mock:當服務不可用、異常等情況下返回配置好的數據,一般在測試場景使用率較高。
限流:通過在網關入口設定最大訪問閾值等方式,控制流入系統服務的請求,保證服務的正常可用。
降級:根據分配的服務權重,在系統壓力超過一定閾值時降低權重較低的服務權重,保證核心重要服務的可用性。
熔斷:設定timeout參數,當流入數據超過設定閾值,使其超時,重置連接,保證服務的可用性。
四、網關
網關為業務的接入層,RPC框架大部分情況下是內部調用,而網關可以提供以下功能:
統一的鑒權服務;
限流服務;
協議轉換:將外部訪問的請求協議轉換為內部統一的可處理的協議;
Mock:為測試提供服務、降級處理等;
其他:比如請求內容解析、請求封裝;
以為即為完善可用的服務框架相關知識,具體實踐請自行探索或參考其他資料。。。