微服务设计模式 - 断路器



问题陈述

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

现在,如何防止服务故障或网络故障级联到其他服务?如果一个服务宕机,则不应再向其发送请求。

解决方案

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

广告