Sentinel 熔断降级的规则配置

什么是熔断?

先说现实中的股市熔断机制。2016 年 1 月 4 日,A 股遇到史上首次熔断,沪指开盘后跌幅超过 5%,直接引发熔断。三家股市交易所暂停交易15分钟,但恢复交易之后股市继续下跌,三大股市交易所暂停交易至闭市。通过现象可以看出熔断是一种保护机制,当事物的状态达到某种“不可接受”的情况时,便会触发“熔断”。在股市中,熔断条件就是大盘跌幅超过 5%,而熔断的措施便是强制停止交易 15 分钟,之后尝试恢复交易,如仍出现继续下跌,便会再次触发熔断直接闭市。但假设 15分钟后,大盘出现回涨,便认为事故解除继续正常交易。这是现实生活中的熔断,如果放在软件中也是一样的。

微服务的熔断是指在某个服务接口在执行过程中频繁出现故障的情况,我们便认为这种状态是“不可接受”的,立即对当前接口实施熔断。在规定的时间内,所有送达该接口的请求都将直接抛出 BlockException,在熔断期过后新的请求进入看接口是否恢复正常,恢复正常则继续运行,仍出现故障则再次熔断一段时间,以此往复直到服务接口恢复。

下图清晰的说明了 Sentinel的熔断过程:

  1. 设置熔断的触发条件,当某接口超过20%的请求访问出现故障,便启动熔断;
  2. 在熔断状态下,若干秒内所有该接口的请求访问都会直接抛出BlockException拒绝访问。
  3. 熔断器过后,下一次请求重新访问接口,当前接口为“半开状态”,后续处理以下分两种情况。

Sentinel 熔断机制

基于SentinelDashboard的熔断设置

Sentinel Dashboard可以设置三种不同的熔断模式:慢调用比例、异常比例、异常数,下面我们分别讲解:

熔断模式-慢调用比例