一、基础概念
二、Spring Cloud Hystrix
Spring Cloud Hystrix是基于Netflix的开源框架Hystrix实现,该框架实现了服务熔断、线程隔离等一系列服务保护功能。
它是一个分布式容错框架,故它有这些特点
- 阻止故障的连锁反应,实现熔断
- 快速失败,实现优雅降级
- 提供实时的监控和告警
1.Hystrix设计了三种状态
对于熔断机制的实现,Hystrix设计了三种状态:
1.熔断关闭状态(Closed)
服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。
在固定时间窗口内(Hystrix默认是10秒),接口调用出错比率达到一个阈值(Hystrix默认为50%),会进入熔断开启状态。
进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的fallback方法。
在进入熔断开启状态一段时间之后(Hystrix默认是5秒),熔断器会进入半熔断状态。
所谓半熔断就是尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。
如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态;如果成功率仍旧很低,则重新进入熔断关闭状态。
三个状态的转化关系如下图:

2. Hystrix的内部处理流程
下图为Hystrix服务调用的内部逻辑:

1.构建Hystrix的Command对象, 调用执行方法.
3.Hystrix Metrics
Hystrix的Metrics中保存了当前服务的健康状况, 包括服务调用总次数和服务调用失败次数等.
根据Metrics的计数, 熔断器从而能计算出当前服务的调用失败率, 用来和设定的阈值比较从而决定熔断器的状态切换逻辑. 因此Metrics的实现非常重要.
4.资源隔离
1.线程隔离
即每个服务单独一个线程池
2.信号量隔离
5.熔断
熔断是为了防止异常不扩散,保证系统的稳定性
6.降级
参考资料
1.漫画:什么是服务熔断 https://blog.csdn.net/moakun/article/details/
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178863.html原文链接:https://javaforall.net
