您的位置:首页 > 其它

关于Hystrix的困惑以及个人理解

2019-05-16 19:15 134 查看

网上文章一大片是关于Hystrix的服务熔断以及服务降级的解释

一个字       乱

借用一个哥们的大白话讲解关于两者的区别,感觉思想比较相近 原话如下:
故事的背景是这样的:由于小强在工作中碰到一些问题,于是想请教一下业界大牛小壮。于是发生了下面的两个场景:

小强在拿起常用手机拨号时发现该手机没有能够拨通,所以就拿出了备用手机拨通了某A的电话,这个过程就叫做降级(主逻辑失败采用备用逻辑的过程)。

由于每次小壮的解释都属于长篇大论,不太容易理解,所以小强每次找小壮沟通的时候都希望通过常用手机来完成,因为该手机有录音功能,这样自己可以慢慢消化。由于上一次的沟通是用备用电话完成的,小强又碰到了一些问题,于是他又尝试用常用电话拨打,这一次又没有能够拨通,所以他不得不又拿出备用手机给某A拨号,就这样连续的经过了几次在拨号设备选择上的“降级”,小强觉得短期内常用手机可能因为运营商问题无法正常拨通了,所以,再之后一段时间的交流中,小强就不再尝试用常用手机进行拨号,而是直接用备用手机进行拨号,这样的策略就是熔断(常用手机因短期内多次失败,而被暂时性的忽略,不再尝试使用)。

关于Hystrix中服务熔断以及服务降级   具体逻辑如下

服务降级:优先保证核心服务,而非核心服务不可用或弱可用。

用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息) 。

服务降级虽然会导致请求失败,但是不会导致阻塞,而且最多会影响这个依赖服务对应的线程池中的资源,对其它服务没有响应。

服务熔断基本三大状态

**三大基本状态解释**
  • Closed:关闭状态(断路器关闭),所有请求都正常访问。

  • Open:打开状态(断路器打开),所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全关闭。默认失败比例的阈值是50%,请求次数最少不低于20次。

  • Half Open:半开状态,Closed状态不是永久的,关闭后会进入休眠时间(默认是5S)。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会完全打开断路器,否则继续保持关闭,再次进行休眠计时

    **触发Hystrix服务熔断的基本参数默认配置**
  • requestVolumeThreshold:触发熔断的最小请求次数,默认20

  • errorThresholdPercentage:触发熔断的失败请求最小占比,默认50%

  • sleepWindowInMilliseconds:休眠时长,默认是5000毫秒

我个人认为这个才是对于服务熔断以及服务降级的一个区分,而并非是服务雪崩采取熔断,服务堵塞采取服务降级,雪崩和熔断没有关系,更多的是因为服务降级,以防止,用户每个请求都进行默认时间等待之后才进行降级,引发的服务熔断,就像谈对象,秒回复------------我和你不合适。 但实际上女娃子也会多观察你几天,看你是否真心喜欢,要是后续几次观察,发现你还是依旧对她那么好,并且还有好几次都感动到她,熔断器失败阀值将至50%一下,女娃子一动心,你俩又回到了以前开开心心,服务关系恢复正常,具体干啥就不知道了,看老板需求吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: