SpringCloud——Hystrix 从入门到辗转反侧

SpringCloud-Hystrix

服务故障的“雪崩”效应

微服务的“扇出”

  • 多个微服务之间的关联调用称为服务"扇出"。例如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务。

  • 由于网络原因或者自身的原因,服务并不能保证 100% 可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet 容器的线程资源会被消耗完毕,导致服务瘫痪。

  • 如果单实例部署微服务,由于服务与服务之间的依赖性,导致故障传播,会对整个微服务系统造成灾难性的严重后果。所以,为了保证其高可用,单个服务通常会集群部署。

如何防止服务“雪崩”

  • 基本思路:需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能影响整个应用程序或系统。
  • 断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。
  • 断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。

认识 Hystrix

概念

  • 从角色上,Hystrix 扮演的是断路器功能。当有服务出现故障时,可以通过短路器监控,返回一个可以处理的响应结果,保证服务调用线程不会长时间被占用,避免故障蔓延。
  • 从技术上,Hystrix是一个开源库,主要处理微服务系统延迟和容错。一个服务出现故障时,不会导致整个系统出现雪崩效应,以提高分布式系统弹性;

作用

服务降级

SpringCloud——Hystrix 从入门到辗转反侧_第1张图片

服务熔断

SpringCloud——Hystrix 从入门到辗转反侧_第2张图片

使用

服务熔断配置

参数设置:

①circuitBreaker.enabled:是否开启熔断;
②circuitBreaker.requestVolumeThreshold:当前服务失败几次后开启断路,默认20次;
③circuitBreaker.sleepWindowInMilliseconds:设置断路时间,过了该时间后会尝试恢复,在断路时间内,即使请求正确也会走降级方法;

熔断类型:

  • 熔断打开
    熔断打开后,在此时间内不会对该服务进行调用,而是直接访问降级方法。通过设置熔断时间,当达到该时间后,会尝试恢复该服务。

  • 熔断关闭
    熔断关闭代表服务正常,不会干扰正常服务调用。

  • 熔断半开
    熔断半开时,请求可以访问服务,若请求正常访问,则熔断会关闭;若请请求不正常,继续熔断,调用降级方法。

参考

  • https://worktile.com/kb/ask/22743.html
  • https://blog.csdn.net/weixin_50616848/article/details/124542186

管理系统推荐(论文+源码+数据库+免费获取)

  • Java实现简单的图书管理系统源码+论文
  • 基于Java实现的商品出入库管理系统
  • 基于Java实现的医院药品信息管理系统
  • 基于Java实现的汽车维修管理系统

你可能感兴趣的:(spring-cloud,spring,cloud,hystrix,java)