微服务设计模式 - 断路器
问题说明
微服务架构将应用程序构建为一组松散耦合的微服务,每个服务都可以以敏捷的方式独立开发,以实现持续交付/部署。 这些服务经常与其他微服务交互。 现在总是有可能服务过载或不可用。 在这种情况下,调用者服务也会等待。 如果多个服务被阻止,则会影响性能并可能对整个应用程序产生级联影响。
现在,如何防止服务故障或网络故障级联到其他服务。 如果一项服务出现故障,则不应再向其发出进一步的请求。
解决方案
我们可以使用断路器模式,其中代理服务充当断路器。 每个服务都应该通过代理服务来调用。 代理服务维护超时和失败计数。 如果连续故障超过故障计数阈值,则代理服务将触发断路器并启动超时期限。 在此超时期间,所有请求都将失败。 一旦超时期限结束,代理服务就允许将给定的有限数量的测试请求传递给提供者服务。 如果请求成功,代理服务将恢复操作,否则,它会再次触发断路器并启动超时期限,在此期间不会受理任何请求。