1. 程式人生 > 其它 >springcloud alibaba nacos+sentinel

springcloud alibaba nacos+sentinel

Nacos 資料模型(領域模型)

Namespace:名稱空間,對不同的環境進行隔離,比如隔離開發環境、測試環境和生產環境
概念 描述
Group:分組,將若干個服務或者若干個配置集歸為一組,通常習慣一個系統歸為一個組(拉勾招聘、拉勾獵頭、拉勾教育)
Service:某一個服務,比如商品微服務
DataId:配置集或者可以認為是一個配置檔案
Namespace + Group + Service 如同 Maven 中的GAV座標,GAV座標是為了鎖定Jar,而這裡是為了鎖定服務
Namespace + Group + DataId 如同 Maven 中的GAV座標,GAV座標是為了鎖定Jar,而這裡是為了鎖定配置檔案
最佳實踐
Nacos抽象出了Namespace、Group、Service、DataId等概念,具體代表什麼取決於怎麼用(非常靈活),推薦用法如下
Namespace 代表不同的環境,如開發dev、測試test、生產環境prod
Group 代表某專案,比如拉勾雲專案
Service 某個專案中具體xxx服務
DataId 某個專案中具體的xxx配置檔案

Sentinel 關鍵概念

Sentinel 流量規則模組

流控模式之關聯限流

關聯的資源調⽤達到閾值時候限流⾃⼰,⽐如⽤戶註冊接⼝,需要調⽤身份證校驗接⼝(往往身份證校驗接⼝),如果身份證校驗接⼝請求達到閾值,使⽤關聯,可以對⽤戶註冊接⼝進⾏限流。

流控模式之鏈路限流

鏈路指的是請求鏈路(呼叫鏈:A-->B--C,D-->E-->C)
鏈路模式下會控制該資源所在的呼叫鏈路入口的流量。需要在規則中配置入口資源,即該呼叫鏈路入口的上下文名稱。

 上圖中來⾃⼊⼝ Entrance1 和 Entrance2 的請求都調⽤到了資源 NodeA ,Sentinel 允許只根據某個調⽤⼊⼝的統計資訊對資源限流。⽐如鏈路模式下設定⼊⼝資源為 Entrance1 來表示只有從⼊⼝ Entrance1 的調⽤才會記錄到 NodeA 的限流統計當中,⽽不關⼼經 Entrance2 到來的調⽤。

流控效果之Warm up

當系統長期處於空閒的情況下,當流量突然增加時,直接把系統拉昇到高水位可能瞬間把系統壓垮,比如電商網站的秒殺模組。
通過 Warm Up 模式(預熱模式),讓通過的流量緩慢增加,經過設定的預熱時間以後,到達系統處理請求速率的設定值。
Warm Up 模式預設會從設定的 QPS 閾值的 1/3 開始慢慢往上增加至 QPS 設定值。

流控效果之排隊等待

排隊等待模式下會嚴格控制請求通過的間隔時間,即請求會勻速通過,允許部分請求排隊等待,通常用於訊息佇列削峰填谷等場景。需設定具體的超時時間,當計算的等待時間超過超時時間時請求就會被拒絕。
很多流量過來了,並不是直接拒絕請求,而是請求進行排隊,一個一個勻速通過(處理),請求能等就等著被處理,不能等(等待時間>超時時間)就會被拒絕
例如,QPS 配置為 5,則代表請求每 200 ms 才能通過一個,多出的請求將排隊等待通過。超時時間代表最大排隊時間,超出最大排隊時間的請求將會直接被拒絕。排隊等待模式下,QPS 設定值不要超過 1000(請求間隔 1 ms)。

Sentinel 降級規則模組

流控是對外部來的大流量進行控制,熔斷降級的視角是對內部問題進行處理。
Sentinel 降級會在呼叫鏈路中某個資源出現不穩定狀態時(例如呼叫超時或異常比例升高),對這個資源的呼叫進行限制,讓請求快速失敗,避免影響到其它的資源而導致級聯錯誤。當資源被降級後,在接下來的降級時間視窗之內,對該資源的呼叫都自動熔斷,這裡的降級其實是Hystrix中的熔斷。

RT(平均響應時間 )

當 1s 內持續進⼊ >=5 個請求,平均響應時間超過閾值(以 ms 為單位),那麼在接下的時間窗⼝(以 s 為單位)之內,對這個⽅法的調⽤都會⾃動地熔斷(丟擲 DegradeException)。注意 Sentinel 預設統計的 RT 上限是 4900 ms,超出此閾值的都會算作 4900 ms,若需要變更此上限可以通過啟動配置項 -Dcsp.sentinel.statistic.max.rt=xxx 來配置。

異常⽐例

當資源的每秒請求量 >= 5,並且每秒異常總數佔通過量的⽐值超過閾值之後,資源進⼊降級狀態,即在接下的時間窗⼝(以 s 為單位)之內,對這個⽅法的調⽤都會⾃動地返回。異常⽐率的閾值範圍是 [0.0, 1.0] ,代表 0% - 100%。

異常數

當資源近 1 分鐘的異常數⽬超過閾值之後會進⾏熔斷。注意由於統計時間窗⼝是分鐘級別的,若 timeWindow ⼩於 60s,則結束熔斷狀態後仍可能再進⼊熔斷狀態。時間窗⼝ >= 60s