微服务设计模式 - 断路器


问题陈述

微服务架构将应用程序构建为一组松散耦合的微服务,每个服务都可以以敏捷的方式独立开发,以实现持续交付/部署。这些服务经常与其他微服务交互。现在总是有可能服务过载或不可用。在这种情况下,调用者服务也会等待。如果多个服务被阻止,则会影响性能,并对整个应用程序产生级联影响。

现在,如何防止服务故障或网络故障级联到其他服务。如果一项服务出现故障,则不应再向其发出进一步的请求。

解决方案

我们可以使用断路器模式,其中代理服务充当断路器。每个服务都应该通过代理服务来调用。代理服务维护超时和失败计数。如果连续故障超过故障计数阈值,则代理服务将触发断路器并启动超时期限。在此超时期间,所有请求都将失败。一旦超时期限结束,代理服务就允许将给定的有限数量的测试请求传递给提供者服务。如果请求成功,代理服务将恢复操作,否则,它会再次触发断路器并启动超时期限,在此期间不会受理任何请求。