熔斷器
當服務不穩定,出現頻繁超時或錯誤時,可能會引起服務呼叫雪崩。此時可以使用熔斷器,使有故障的服務及時返回錯誤,提高使用者體驗和系統效能。 OpenResty Edge 支援 3 種熔斷策略:慢請求比例、錯誤請求比例、錯誤請求數量。
- 策略:熔斷策略,慢請求比例、錯誤請求比例、錯誤請求數量。
- 統計時長:進行統計的時間視窗大小,單位:秒。
- 熔斷時長:觸發熔斷後的熔斷時長,熔斷時長之內的請求會直接返回錯誤。單位:秒。
- 探測恢復時長:處於恢復狀態的時間,在此期間,如果請求成功或探測恢復超時,則關閉熔斷器;如果請求失敗,則繼續熔斷。單位:秒。
- 慢請求時長:當一個請求時間大於此時間時,則認為這個請求是慢請求。單位:毫秒。
- 慢請求比例:觸發熔斷的慢請求比例。
- 錯誤狀態碼:當一個請求狀態碼是選擇的狀態碼時,則認為這個請求是錯誤請求。
- 錯誤請求比例:觸發熔斷的錯誤請求比例。
- 錯誤請求數量:觸發熔斷的錯誤請求數量。
- 最小請求數:當請求數沒有達到這個值時,即使慢請求比例、錯誤請求比例、錯誤請求數量達到閾值,也不會觸發熔斷。
- 熔斷動作:退出、重定向。
- 響應狀態碼:當熔斷動作選擇“退出”時,可以選擇響應狀態碼。
- 響應體:當熔斷動作選擇“退出”時,可以自定義響應體或者使用預設的響應體。
示例:
此示例中新增了 2 條頁面規則:
- 一條用於開啟熔斷器。
- 另一條用於代理到上游,上游伺服器會讓請求等待 3 秒,然後返回。
結果示例:
$ curl http://test.com -v -I
...
< HTTP/1.1 200 OK
...
$ curl http://test.com -v -I
...
< HTTP/1.1 200 OK
...
$ curl http://test.com -v -I
...
< HTTP/1.1 502 Bad Gateway
...
傳送了三個請求,前兩個超時了(慢請求),第三個立即返回了錯誤,因為已經最低請求數並且慢請求比例大於 50%。
啟用熔斷器事件
如果希望在熔斷器狀態發生轉變時,在介面上看到相關事件,則可以透過以下動作進行開啟:
關於事件的更多資訊,請看此文件:事件