Hystrix是什么
Hystrix 能使你的系统在出现依赖服务失效的时候,通过隔离系统所依赖的服务,防止服务级联失败,同时提供失败回退机制,更优雅地应对失效,并使你的系统能更快地从异常中恢复。
Hystrix能做什么?
- 在通过第三方客户端访问(通常是通过网络)依赖服务出现高延迟或者失败时,为系统提供保护和控制
- 在分布式系统中防止级联失败
- 快速失败(Fail fast)同时能快速恢复
- 提供失败回退(Fallback)和优雅的服务降级机制
- 提供近实时的监控、报警和运维控制手段
Hystrix设计原则?
- 防止单个依赖耗尽容器(例如 Tomcat)内所有用户线程
- 降低系统负载,对无法及时处理的请求快速失败(fail fast)而不是排队
- 提供失败回退,以在必要时让失效对用户透明化
- 使用隔离机制(例如『舱壁』/『泳道』模式,熔断器模式等)降低依赖服务对整个系统的影响
- 针对系统服务的度量、监控和报警,提供优化以满足近实时性的要求
- 在 Hystrix 绝大部分需要动态调整配置并快速部署到所有应用方面,提供优化以满足快速恢复的要求
- 能保护应用不受依赖服务的整个执行过程中失败的影响,而不仅仅是网络请求
Hystrix实现原理-舱壁模式
-
货船为了进行防止漏水和火灾的扩散,会将货仓分隔为多个,当发生灾害时,将所在货仓进行隔离就可以降低整艘船的风险。
Hystrix dashboard 测试
今天根据他人博客上介绍的Spring Cloud,自己尝试敲了下代码。但走到Hystrix实现熔断机制以及监控熔断信息的时候遇到一个问题:Hystrix 自带了一个dashboard,获取监控的时候界面一直是Loading...没有任何反应,如图:
代码请参考https://blog.csdn.net/column/details/15197.html
点击Monitor Stream之后就跳到下面的界面
IDEA编辑工具的控制台打印
浏览器F12 没有任何报错的信息
如果直接访问http://localhost:8764/hystrix.stream 则界面一直会打印ping,但没有结果返回:
无意中的测试,发现这个Loading...是一直在等待负载均衡的提供方要去消费服务,即访问负载均衡服务器,去调用客户端,如果有数据响应则监控界面就会有图形数据展示:
如果想让图中的数据发生变化,则需要循环多次的去访问负载均衡的提供方,让其消费服务,以至于达到监控的目的。
此时再次访问http://localhost:8764/hystrix.stream,则会有以下数据一直在浏览器中打印:
最后,附上一张图形概要以供参考: