熔断器

当服务不稳定,出现频繁超时或错误时,可能会引起服务调用雪崩。此时可以使用熔断器,使有故障的服务及时返回错误,提高用户体验和系统性能。 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%。

启用熔断器事件

如果希望在熔断器状态发生转变时,在界面上看到相关事件,则可以通过以下动作进行开启:

关于事件的更多信息,请看此文档:事件