灾难性雪崩效应

灾难性雪崩效应及其解决方案
一个请求调用多个服务时,如果客户端访问A服务,A服务调用B服务,B服务需要调用C服务,由于网络原因或者硬件故障,程序Bug的原因,如果B和C服务不能及时响应,A服务处于阻塞状态,此时有大量的请求涌入,导致资源消耗完毕,最终造成服务逻辑崩溃。服务与服务之间的依赖性,会造成连锁反应,对整个微服务系统造成灾难性的严重后果。

造成灾难性雪崩的原因

  • 服务提供者不可用
    硬件故障、程序Bug、缓存击穿、请求量过大
  • 重试加大流
    用户重试,代码重试逻辑
  • 服务调用者不可用
    同步请求阻塞造成资源耗尽

解决灾难性雪崩效应的方式

  • 降级
    当请求超时,资源不足对的情况下进行服务降级。降级后可以配合降级返回托底数据实现一个fallback()方法,当请求后端发生异常的时候,可以使用fallback()方法返回的值
  • 熔断
    当失败率(网络/超时)达到阀值自动触发降级,熔断器触发的快速失败会进行快速回复
  • 请求缓存
  • 隔离
    限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用

相关文章:

  • 2021-11-27
  • 2022-12-23
  • 2021-07-17
  • 2021-09-27
  • 2022-01-09
猜你喜欢
  • 2022-01-15
  • 2021-09-09
  • 2021-11-09
  • 2022-12-23
  • 2022-01-03
  • 2021-04-12
相关资源
相似解决方案