关于Hystrix的困惑以及个人理解
网上文章一大片是关于Hystrix的服务熔断以及服务降级的解释
一个字 乱
借用一个哥们的大白话讲解关于两者的区别,感觉思想比较相近 原话如下:
故事的背景是这样的:由于小强在工作中碰到一些问题,于是想请教一下业界大牛小壮。于是发生了下面的两个场景:
小强在拿起常用手机拨号时发现该手机没有能够拨通,所以就拿出了备用手机拨通了某A的电话,这个过程就叫做降级(主逻辑失败采用备用逻辑的过程)。
由于每次小壮的解释都属于长篇大论,不太容易理解,所以小强每次找小壮沟通的时候都希望通过常用手机来完成,因为该手机有录音功能,这样自己可以慢慢消化。由于上一次的沟通是用备用电话完成的,小强又碰到了一些问题,于是他又尝试用常用电话拨打,这一次又没有能够拨通,所以他不得不又拿出备用手机给某A拨号,就这样连续的经过了几次在拨号设备选择上的“降级”,小强觉得短期内常用手机可能因为运营商问题无法正常拨通了,所以,再之后一段时间的交流中,小强就不再尝试用常用手机进行拨号,而是直接用备用手机进行拨号,这样的策略就是熔断(常用手机因短期内多次失败,而被暂时性的忽略,不再尝试使用)。
关于Hystrix中服务熔断以及服务降级 具体逻辑如下
服务降级:优先保证核心服务,而非核心服务不可用或弱可用。
用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息) 。
服务降级虽然会导致请求失败,但是不会导致阻塞,而且最多会影响这个依赖服务对应的线程池中的资源,对其它服务没有响应。
服务熔断基本三大状态
**三大基本状态解释**
-
Closed:关闭状态(断路器关闭),所有请求都正常访问。
-
Open:打开状态(断路器打开),所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全关闭。默认失败比例的阈值是50%,请求次数最少不低于20次。
-
Half Open:半开状态,Closed状态不是永久的,关闭后会进入休眠时间(默认是5S)。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会完全打开断路器,否则继续保持关闭,再次进行休眠计时
**触发Hystrix服务熔断的基本参数默认配置**
-
requestVolumeThreshold:触发熔断的最小请求次数,默认20
-
errorThresholdPercentage:触发熔断的失败请求最小占比,默认50%
-
sleepWindowInMilliseconds:休眠时长,默认是5000毫秒
我个人认为这个才是对于服务熔断以及服务降级的一个区分,而并非是服务雪崩采取熔断,服务堵塞采取服务降级,雪崩和熔断没有关系,更多的是因为服务降级,以防止,用户每个请求都进行默认时间等待之后才进行降级,引发的服务熔断,就像谈对象,秒回复------------我和你不合适。 但实际上女娃子也会多观察你几天,看你是否真心喜欢,要是后续几次观察,发现你还是依旧对她那么好,并且还有好几次都感动到她,熔断器失败阀值将至50%一下,女娃子一动心,你俩又回到了以前开开心心,服务关系恢复正常,具体干啥就不知道了,看老板需求吧。 | |
---|---|
- 关于以太网(Ethernet II)这个网络的个人理解以及应用(2)
- 关于Vue中组件传值,以及emit方法的一些个人理解
- 关于以太网(Ethernet II)这个网络的个人理解以及应用(1)
- 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)
- 关于wordpress的$post全局变量,以及主循环the loop的一些个人理解。
- 关于property,以及python oop的个人理解
- 关于launcher的个人理解
- 关于正向代理,反向代理,负载均衡的个人理解
- 关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2个人理解心得
- 关于初学者如何理解面向对象和面向过程的区别以及java中的类和对象
- 关于各种输入输出流的二次理解总结 ,以及输入的三种方法总结。
- 关于最长路径的一些个人理解
- 关于关键路径的一些个人理解
- 关于js中单引号(')和双引号(")的使用以及转义的理解
- Struts2 执行流程 以及 Action与Servlet比较 (个人理解)
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)
- 关于verilog里阻塞与非阻塞赋值的个人理解
- 关于51单片机寻址方式的个人总结和困惑点记录及自答
- 关于字符串操作的面试题(牛客网视频文字个人理解版)
- 关于移位运算(书本理论 + 个人理解)