一、簡介:
wiki:https://github.com/alibaba/Sentinel/wiki
選擇:
♥ 開源,成熟(功能完備、實際應用),活躍(功能維護及拓展)
♥ 更輕量:依賴資源少;api方式或者注解方式資源定義;提供擴展入口(自定義slot規則)
♥ 性能損耗小:只有在業務單機量級超過 25W QPS 的時候才會有一些顯著的影響(5% - 10% 左右)
♥♥ 資源,規則分離:埋點資源,按需配置應用規則
核心:資源 + 規則
資源:萬物皆資源,通過API定義的任何代碼
規則:系統保護、限流,熔斷降級等規則
總體框架:
資源Entry對象 + slot chain
熔斷降級:
隔離方式:信號量,控制並發線程數(規避線程池隔離方式弊端:預設線程池資源 +上下文切換)
降級策略:
♦ 平均響應時間 (DEGRADE_GRADE_RT=0):秒級,passCount>=5
♦ 異常比例 (DEGRADE_GRADE_EXCEPTION_RATIO=1):秒級,qps >= 5
♦ 異常數 (DEGRADE_GRADE_EXCEPTION_COUNT=2):分鍾級
怎么使用:
定義埋點資源
+
配置規則:動態
二、Sentinel 配置:
1、引入依賴:
2、添加配置:
3、規則數據源配置:
a)自定義pull型規則動態數據源:服務每秒拉取配置,有變更則更新規則應用
數據源定義:
規則配置:uc:rules:degrade
[{
"resource": "xxxResource", //應用資源名稱
"count": 0.5, //根據 grade 設置,代表 響應時間閾值 | 異常比例(異常數占總數比例)| 異常閾值
"grade": 1, //降級策略 0 平均響應時間 1 異常比例 2 異常數
"limitApp": "default",
"timeWindow": 4 //時間窗口,單位 s,觸發規則后,在接下的時間窗口之內,對這個方法的調用都會自動地熔斷
} ]
b)apollo動態配置源
依賴:
配置:
配置文件:yml文件