Hystrix 熔断器 详细介绍

Hystrix作用:
1.Hystrix能保证在出现问题的时候,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
2.Hystrix就类似于 “断路器” 本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
Hystrix作用原理:
1.Hystrix为每个服务调用的功能分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。
2.用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理:返回给用户一个错误提示或备选结果。
2.用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息) 。
4.服务降级虽然会导致请求失败,但是不会导致阻塞,而且最多占用该服务的线程资源,不会导致整个容器资源耗尽,把故障的影响隔离在线程池内。
触发Hystrix服务降级的情况
1.线程池已满
2.请求超时
Hystrix要保护的:
Hystrix主要的作用就是:服务的熔断、服务降级、服务限流、近实时监控。
Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。
分布式系统面临的问题
1.扇出:
多个微服务互相调用的时候,如果A调用B、C,而B、C又继续调用其他微服务,这就是扇出(像一把扇子一样慢慢打开)。
2.雪崩 :
程序在级联调用的时候 一个服务出现问题 导致其他服务也不可访问
雪崩效应产生的几种场景:
1.流量激增:比如异常流量、用户重试导致系统负载升高;
2缓存刷新:假设A为client端,B为Server端,假设A系统请求都流向B系统,请求超出了B系统的承载能力,就会造成B系统崩溃;
3.程序有Bug:代码循环调用的逻辑问题,资源未释放引起的内存泄漏等问题;
4.硬件故障:比如宕机,机房断电,光纤被挖断等。
5.数据库严重瓶颈,比如:长事务、sql超时等。
6.线程同步等待:系统间经常采用同步服务调用模式,核心服务和非核心服务共用一个线程池和消息队列。如果一个核心业务线程调用非核心线程,这个非核心线程交由第三方系统完成,当第三方系统本身出现问题,导致核心线程阻塞,一直处于等待状态,而进程间的调用是有超时限制的,最终这条线程将断掉,也可能引发雪崩;

雪崩解决方案:
1.超时机制 设置超时机制
2. 断路器模式 请求失败的比例
服务熔断:
1.熔断机制是应对雪崩效应的一种链路保护机制,一般存在于服务端
2.当扇出链路的某个服务出现故障或响应超时,会进行服务降级,进而熔断该节点的服务调用,快速返回“错误”的相应信息。
3.Hystrix的熔断存在阈值,缺省是5秒内20次调用失败就会触发
三种状态
1.Closed:关闭状态(断路器关闭
所有请求都正常访问。
2.Open:打开状态(断路器打开)
所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器打开。默认失败比例的阈值是 50% ,请求次数最少不低于 20 次。
3.Half Open:半开状态,open状态不是永久的
打开后会进入休眠时间(默认是5S)。随后断路器会自动进入半开状态。此时会释放1次请求通过,若这个请求是健康的,则会关闭断路器,否则继续保持打开,再次进行 5 秒休眠计时。

在重试的20次中 有50%失败的时候 会打开
打开状态 所有服务不允许访问
半开状态 部分允许访问

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值