Hystrix 熔断器
最近往返北京-邯郸较频繁,有点累,好久没集中学习了。今天周六来公司加班,配合测试联调,趁着这个时间正好学习 SpringCloud-Netflix 下 Hystrix 熔断器的使用。
背景
之前说过,在分布式、集群服务环境中,通常会有多个服务层之间调用,如果某个服务出现故障,进而导致其他服务级联实效,甚至导致整个系统不可用。
Hystrix 熔断器
Hystrix 熔断器类似电路中的保险丝,或者开关。当检测到某个服务有问题时(默认20s 内失败5次),熔断器会强制以后的其他调用快速失败,不再访问此服务,向调用方返回一个符合预期的、可处理的备选响应(FallBack,可以是默认值也可以是缓存中的值),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
Hystrix 熔断器也具有自动检测恢复的机制,保证服务正常后仍可继续被调用。
Fegin Hystrix
新建一个 SpringBoot 项目 eureka-consumer-hystrix
Fegin 整合了 Ribbon 和 Hystrix,默认关闭了 Hystrix,需要开启。
配置文件
1 | server: |
FeginHystrix 熔断器
1 |
|
FeignClient 接口
1 | //name=调用的服务名,fallback:指定服务熔断时调用的熔断器 |
测试
启动 eureka-server 注册中心、eureka-provider 服务提供者、启动 eureka-consumer 服务消费者,浏览器输入 http://localhost:10000/hello
发现可以正常返回内容:hello! Yakai! from provider
关闭服务提供者eureka-provider,再次请求http://localhost:10000/hello
页面返回:failed
,说明熔断器生效。
- Title: Hystrix 熔断器
- Author: 薛定谔的汪
- Created at : 2018-06-09 18:20:16
- Updated at : 2023-11-17 19:37:36
- Link: https://www.zhengyk.cn/2018/06/09/springcloud/hystrix/
- License: This work is licensed under CC BY-NC-SA 4.0.