熔斷器

當服務不穩定,出現頻繁超時或錯誤時,可能會引起服務呼叫雪崩。此時可以使用熔斷器,使有故障的服務及時返回錯誤,提高使用者體驗和系統效能。 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%。

啟用熔斷器事件

如果希望在熔斷器狀態發生轉變時,在介面上看到相關事件,則可以透過以下動作進行開啟:

關於事件的更多資訊,請看此文件:事件