服务熔断Hystrix

简述

  在微服务架构中,客户端访问A服务,而A服务需要调用B服务,B服务需要调用C服务,由于网络原因或者自身的原因,如果B服务或者C服务不能及时响应,A服务将处于阻塞状态,直到B服务C服务响应。此时若有大量的请求涌入,容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。

  雪崩的根本原因来源于服务之间的强依赖,所以我们可以提前评估,做好熔断,隔离,限流。

熔断降级

  熔断这一概念来源于电子工程中的断路器(Circuit Breaker)。在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这种牺牲局部,保全整体的措施就叫做熔断。 

Hystrix

  Hystrix是由Netflflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。SpringCloud Fegin默认已为Feign整合了hystrix,所以添加Feign依赖后就不用再添加hystrix。

Hystrix简单使用

  Hystrix已经和fegin整合所以配合fegin使用Hystrix非常方便,我们只需创建fegin服务调用接口的实现类,重写fegin的方法,这里的方法重写的就是Hystrix用于服务降级的方法

  然后我们只需在fegin接口进行一个注解配置,指定该接口的实现类

  这样当调用的下游微服务不可用的时候,就会自动触发这个服务降级方法,达到熔断的机制。

 

 

 

 

 

 

   

posted @ 2021-08-01 23:54  艾尔夏尔-Layton  阅读(61)  评论(0编辑  收藏  举报