一个简单链路 a > b > c > d,如果d服务挂了那么会触发c > d的熔断,也就是c > d的调用会马上返回错误。如果因为d的错误,c也返回错误的话么,那么对b来说,在这条链路上的b > c的调用岂不是也会一直出错,从而触发b > c的熔断?(最后熔断 a > b)如果这样的话,这么做的意义是什么?
一个简单链路 a > b > c > d,如果d服务挂了那么会触发c > d的熔断,也就是c > d的调用会马上返回错误。如果因为d的错误,c也返回错误的话么,那么对b来说,在这条链路上的b > c的调用岂不是也会一直出错,从而触发b > c的熔断?(最后熔断 a > b)如果这样的话,这么做的意义是什么?
3 回答3.6k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
3 回答1.8k 阅读
2 回答1.4k 阅读
2 回答1.8k 阅读
熔断是为了防止因为访问超时、错误重试而引发的大量服务请求(雪崩),因为这会大量消耗服务器资源而影响其它可能正常的请求。
如果每一个 a 都需要 d ,d 挂了所有 a 都会失败,那么直接熔断到 a 其实并没有什么问题。
如果不是每一个 a 都需要 d ,比如 d 挂掉只会引起 50% c 失败,那么 b > c 是否要熔断就要看策略了。