熔断器
当服务不稳定,出现频繁超时或错误时,可能会引起服务调用雪崩。此时可以使用熔断器,使有故障的服务及时返回错误,提高用户体验和系统性能。 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%。
启用熔断器事件
如果希望在熔断器状态发生转变时,在界面上看到相关事件,则可以通过以下动作进行开启:
关于事件的更多信息,请看此文档:事件