先说现实中的股市熔断机制。2016 年 1 月 4 日,A 股遇到史上首次熔断,沪指开盘后跌幅超过 5%,直接引发熔断。三家股市交易所暂停交易15分钟,但恢复交易之后股市继续下跌,三大股市交易所暂停交易至闭市。通过现象可以看出熔断是一种保护机制,当事物的状态达到某种“不可接受”的情况时,便会触发“熔断”。在股市中,熔断条件就是大盘跌幅超过 5%,而熔断的措施便是强制停止交易 15 分钟,之后尝试恢复交易,如仍出现继续下跌,便会再次触发熔断直接闭市。但假设 15分钟后,大盘出现回涨,便认为事故解除继续正常交易。这是现实生活中的熔断,如果放在软件中也是一样的。
微服务的熔断是指在某个服务接口在执行过程中频繁出现故障的情况,我们便认为这种状态是“不可接受”的,立即对当前接口实施熔断。在规定的时间内,所有送达该接口的请求都将直接抛出 BlockException,在熔断期过后新的请求进入看接口是否恢复正常,恢复正常则继续运行,仍出现故障则再次熔断一段时间,以此往复直到服务接口恢复。
下图清晰的说明了 Sentinel的熔断过程:
Sentinel 熔断机制
Sentinel Dashboard可以设置三种不同的熔断模式:慢调用比例、异常比例、异常数,下面我们分别讲解:
熔断模式-慢调用比例