[TOC]
# 概念
熔断: 比如用电高,熔断设备保护,不至于引发火灾
隔离: cpu,内存有大小,不隔离,一个使用完,其他人就用不了
限流: 当大流量来的时候,要限流,比如一秒100请求,大了不行,这时候要限流
降级: 当系统发生故障,我们要降级,不至于故障恶化
# NetFlix Hystrix断路器原理
![](https://box.kancloud.cn/9ca0e3d2aa902bc7eb534422232f1592_1865x805.png)
我们用了这个之后,我们会把调用封装在Construct Hystrix里面,那么它就有这些功能
调用模式:有同步,异步,响应式(异步),
请求来的话,先电路判断(circuit open?),电路是不通直接短路(short-circuit),马上返回,并调用降级函数(如果提供的话),
有降级函数(getFallback())先调用降级函数,没有直接抛异常(Exception Thrown)
降级函数也有可能会出错的,出错就再次抛出异常
如果电路是通的,他会判断,这个线程资源是否ok,队列资源是否ok,如果不满足,会限流,会拒绝你的请求,走上面一样的路径,也是走降级
如果通过前面,电路同并且资源满足,就运行,运行时如果超时,也会走降级流程,
如果走到最后(Success?)成功的话,他会获取正确的Response,回到调用端,
如果这步出错也是走降级这个路
任何环节都会以(Metric形式)反馈给(Calculate Circuit Health)计算电路健康组件,最后他会统计这些,反馈给内部的熔断器电路判断组件(Circuit open?),来判断,下次是打开电路还是直接熔断电路