常见微服务容错方案

211 阅读1分钟
雪崩效应

假设有A,B两个服务且B服务调用A服务
如果当A服务挂了的时候,B服务没做容错处理将一直调用A的API直到A返回结果超时,由于A服务挂了就会导致大量的请求阻塞超时,耗尽线程,继而导致上层服务不可用
如图: image.png

常见的容错方案?
  • 超时:为每个请求设置一个时间,如果在该时间内还没得到返回结果,则释放当前请求线程

  • 限流:为某个服务设置上限流量,如果当前请求已经超过了上限流量,则会直接拒绝

  • 仓壁模式: 资源隔离互不干扰,降低服务对整个系统的影响,增加了系统得到弹性

  • 断路器模式:假设有A,B两个服务,其中A为消费者,B为提供者。 当A调用B服务时的错误率或者错误次数达到阀值时(代表B服务挂掉了),断路器打开,那么A将不再调用B服务。如果B服务又恢复了呢?实际上断路器会在一段时间后允许一次请求去调用B服务,如果请求成功,则断路器关闭,失败则继续打开
    如图: image.png