微服务-SpringCloud学习系列(五): 熔断保护Hystrix

 在不同服务调用的时候(也存在多级调用),如果服务消费者所调用的服务提供者因为某些原因而无法即使响应,那么服务消费者将被挂起(不能正确执行,占用资源,当Web容器的空闲线程被占用完时,后续所有请求将都不能执行),即服务雪崩效应,可以通过服务隔离,熔断降级,服务限流等方式进行解决。

1.服务隔离

 通常通过线程池隔离或者信号量隔离的方式实现服务隔离,让服务故障不能传递到其他服务中,将出现故障的服务单独隔离起来。

 2.熔断降级

如果发现某个服务出现鼓掌,将故障的服务从服务列表中剔除(这个过程称为服务熔断),然后模拟返回友好的提示结果(这个过程称为服务降级)。

3.服务限流

服务限流时服务降级的一种,通过设置系统的吞吐量的阈值,对流量进行限制。

4.Hystrix

 5.Hystrix对RestTemplate的支持

①引入依赖

 ②启动类激活,在启动类使用@EnableCircuitBreaker注解

③配置降级逻辑

④在需要受到保护的接口上增加@HystrixCommand注解

上述是单个熔断配置,通过@DefaultProperties注解实现全局统一的熔断配置。

统一的熔断配置有两点需要注意:defaultFallback指定的方法不能有参数,类中的方法定义统一的返回值(因为fallback的方法返回值要求与原有方法的返回值一致)。

 ⑤如何修改熔断配置

 6.Hystrix对Feign的支持

①引入依赖(Feign中已经集成了Hystrix,可以不用额外引入)

②在Feign中开启Hystrix

 ③自定义一个接口实现类,作为熔断的降级逻辑类

 ④在Feign接口配置对Hystrix的降级实现类

 7.Hystrix的监控平台actuator和Dashboard

①引入依赖actuator,启动类增加@EnableCircuitBreaker注解

 ②添加配置信息,暴露所有端点(默认只暴露其中几个),然后可以通过http://127.0.0.1:port/actuator/hystrix.stream获取Hytrix的实时文本数据。

 ③搭建Dashboard(引入依赖dashboard)

④在启动类增加@EnableHystrixDashboard注解,然后就可以通过http://127.0.0.1:port/hystrix访问监控界面,输入http://127.0.0.1:port/actuator/hystrix.stream对指定服务的熔断信息收集并展示。

 8.Hystrix监控的聚合平台Turbine

 收集每一个服务的Hystrix信息,并进行整合。

①需要单独的搭建一个Turbine服务用于收集Hystrix信息

②引入依赖

 ③配置微服务的Hystrix监控

 ④在启动类增加@EnableTurbine注解,然后http://127.0.0.1:port/hystrix访问监控界面,输入http://127.0.0.1:port/turbine.stream展示聚合的监控信息。

9.Hystrix的断路器

 Hystrix通过切换断路器的状态,来确定是否执行降级方法。

Hystrix的熔断器配置

 Hystrix的隔离策略配置(支持线程池隔离和信号量隔离)

 10.总结

学习Hystrix的配置,降级处理,聚合监控,以及熔断器隔离策略的配置

Hystrix的源码分析参考(http://www.uml.org.cn/wfw/201906063.asp?artid=22057)。

posted @ 2020-05-04 03:19  Masting  阅读(340)  评论(0编辑  收藏  举报