服務(wù)熔斷
當(dāng)服務(wù)中的服務(wù)端接口不穩(wěn)定,出現(xiàn)頻繁超時(shí)或錯(cuò)誤時(shí),可能會引起服務(wù)調(diào)用雪崩。您可以對應(yīng)用開啟服務(wù)熔斷功能,使有故障的服務(wù)端及時(shí)返回錯(cuò)誤,并釋放系統(tǒng)資源,提高用戶體驗(yàn)和系統(tǒng)性能。
功能簡介
您可以通過下述操作讓故障處于可控范圍:
通過監(jiān)控或者服務(wù)拓?fù)洳榭吹侥硞€(gè)服務(wù)延時(shí)較大、錯(cuò)誤率較多后,進(jìn)行服務(wù)治理。
選擇異常服務(wù)后,進(jìn)行自動熔斷設(shè)置,可自定義熔斷條件,例如:在某個(gè)時(shí)間段內(nèi)(例如 10s)請求數(shù)達(dá)到某個(gè)值,且錯(cuò)誤率或者延時(shí)達(dá)到某個(gè)值。
滿足條件,則可以觸發(fā)熔斷。服務(wù)熔斷后還可以持續(xù)測試該服務(wù),進(jìn)行自動熔斷恢復(fù)。服務(wù)熔斷的規(guī)則發(fā)布流程如下:
通過微服務(wù)管控臺 MS 下發(fā)熔斷的動態(tài)配置到分布式配置中心 DRM。
DRM 將熔斷的動態(tài)配置下發(fā)到 MOSN。
MOSN 根據(jù)平均 RT 和錯(cuò)誤率觸發(fā)熔斷。
熔斷可在客戶端或服務(wù)端生效。
創(chuàng)建熔斷規(guī)則
登錄 SOFAStack 控制臺。
在左側(cè)菜單欄選擇 中間件 > 微服務(wù)平臺 > 微服務(wù) > 服務(wù)治理,然后單擊 服務(wù)熔斷 頁簽。
單擊 添加熔斷規(guī)則,然后配置以下參數(shù):
參數(shù)
說明
規(guī)則名稱
配置服務(wù)熔斷規(guī)則的名稱。
應(yīng)用
配置檢測的目標(biāo)應(yīng)用。
您可以手動填寫或在下拉列表中選擇。
熔斷方向
配置服務(wù)熔斷的方向,取值如下:
客戶端熔斷:表示熔斷規(guī)則在客戶端生效。在客戶端側(cè)統(tǒng)計(jì)調(diào)用服務(wù)端的請求指標(biāo),應(yīng)用填寫客戶端的應(yīng)用,服務(wù)和方法填寫引用的服務(wù)端的服務(wù)和方法。
服務(wù)端熔斷:表示熔斷規(guī)則在服務(wù)端生效,每個(gè)服務(wù)端單獨(dú)統(tǒng)計(jì)請求指標(biāo),應(yīng)用填寫服務(wù)端的應(yīng)用,服務(wù)和方法填寫服務(wù)端的服務(wù)和方法。
熔斷服務(wù)
配置熔斷的服務(wù)。單擊 切換輸入模式 可在手動填寫與下拉選擇之間切換。
方法
配置需要熔斷的服務(wù)的方法名。
熔斷類型
配置熔斷的類型,取值如下:
錯(cuò)誤比率:熔斷時(shí)間窗口內(nèi)的請求錯(cuò)誤率大于錯(cuò)誤率閾值時(shí),觸發(fā)熔斷。
平均 RT:熔斷時(shí)間窗口內(nèi)的請求數(shù)閾值大于平均響應(yīng)時(shí)間 RT(Response Time)的閾值時(shí),觸發(fā)熔斷。
運(yùn)行模式
配置熔斷的運(yùn)行模式,取值如下:
攔截模式:滿足條件的請求會觸發(fā)熔斷規(guī)則。
觀察者模式:熔斷規(guī)則不會被觸發(fā),只會在 MOSN 里打印日志。
熔斷配置
配置觸發(fā)熔斷的各項(xiàng)參數(shù):
熔斷指標(biāo)窗口:和請求數(shù)閾值搭配使用,表示熔斷指標(biāo)窗口內(nèi)至少有請求數(shù)閾值的請求就會納入熔斷指標(biāo)統(tǒng)計(jì)。單位為秒。
請求數(shù)閾值:和熔斷指標(biāo)窗口搭配使用。單位為個(gè)。
錯(cuò)誤率閾值:請求數(shù)的平均錯(cuò)誤率達(dá)到此閾值時(shí)觸發(fā)熔斷。熔斷類型配置為 錯(cuò)誤比率 時(shí)配置。
平均 RT 閾值:請求響應(yīng)時(shí)間超過此閾值時(shí)觸發(fā)熔斷。單位為毫秒。熔斷類型配置為 平均 RT 時(shí)配置。
熔斷時(shí)間段:觸發(fā)熔斷后的熔斷時(shí)長,熔斷時(shí)長之內(nèi)的請求會直接返回錯(cuò)誤。當(dāng)熔斷超過該時(shí)間后會再次嘗試調(diào)用服務(wù)端,如果還是失敗則繼續(xù)觸發(fā)熔斷。
RPC 超時(shí)時(shí)間:經(jīng)典微服務(wù)場景會使用。單位為毫秒。熔斷類型配置為 錯(cuò)誤比率 時(shí)配置。
流量精確匹配(可選)
配置之后,只有滿足匹配條件的流量才會使用這份熔斷規(guī)則。置空表示匹配所有流量。
您可以配置多條匹配條件,多個(gè)條件是“與”的關(guān)系,按順序進(jìn)行匹配。參數(shù)配置如下:
字段:可選擇系統(tǒng)字段和請求頭。
字段名:根據(jù)字段類型有不同的值。
系統(tǒng)字段:包括流量類型、調(diào)用方應(yīng)用名、調(diào)用方 IP、服務(wù)方應(yīng)用名。
請求頭:請求頭是指協(xié)議的請求頭,比如 Dubbo 協(xié)議取的是 attachment,HTTP 協(xié)議取的是 Request Header。用戶可以在應(yīng)用系統(tǒng)中自定義請求頭參數(shù)和值。
選擇邏輯:包括等于、不等于、屬于、不屬于、正則。
字段值:字段名對應(yīng)的值。
單擊 提交,然后單擊 確定。
在熔斷規(guī)則列表中,將剛剛創(chuàng)建的熔斷規(guī)則的狀態(tài)改為 開啟。
編輯熔斷規(guī)則
您可以隨時(shí)編輯已創(chuàng)建的熔斷規(guī)則,規(guī)則提交后會實(shí)時(shí)生效。
在 服務(wù)熔斷 頁簽,單擊目標(biāo)應(yīng)用左側(cè)的加號(+)。
單擊目標(biāo)熔斷規(guī)則右側(cè)的 編輯。
按需求編輯熔斷規(guī)則后,單擊 提交。
刪除熔斷規(guī)則
您可以刪除已創(chuàng)建的熔斷規(guī)則,刪除操作會實(shí)時(shí)生效,請謹(jǐn)慎操作。
在 服務(wù)熔斷 頁簽,單擊目標(biāo)應(yīng)用左側(cè)的加號(+)。
單擊目標(biāo)熔斷規(guī)則右側(cè)的 刪除。
單擊 確定。