熔断器的实现参考了Google SRE过载保护算法,该算法的原理如下:
- 请求数量(requests):调用方发起请求的数量总和
- 请求接受数量(accepts):被调用方正常处理的请求数量
在正常情况下,这两个值是相等的,随着被调用方服务出现异常开始拒绝请求,请求接受数量(accepts)的值开始逐渐小于请求数量(requests),这个时候调用方可以继续发送请求,直到requests = K * accepts,一旦超过这个限制,熔断器就回打开,新的请求会在本地以一定的概率被抛弃直接返回错误,概率的计算公式如下:
image.png
网友评论