13-微服务熔断器-Hystrix概念

熔断器-Hystrix概念

通常情况,我们用Ribbon或OpenFeign实现微服务相互调用时,它默认都有2个超时时间

image-20210104114013925

当然,默认情况下:ConnectTimeout:250毫秒 ,ReadTimeout:1000毫秒

由于,设置了上述的2个时间,在微服务调用时,就有可能会超时,超时就有可能会出问题

严重时,可能产生“服务雪崩”问题

服务雪崩

在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者"的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。

如果下图所示: A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。

image-20210104114219334

现实通常是更糟糕

当一切正常时,请求看起来是这样的

image-20210104114416683

当其中有一个系统有延迟时,它可能阻塞整个用户请求:

image-20210104114517450

在高流量的情况下,一个后端依赖项的延迟可能导致所有服务器上的所有资源在数秒内饱和(PS:意味着后续再有请求将无法立即提供服务)

image-20210104114540331

现在出问题了,那么怎么办呢?

老蒲说:

发现问题,解决问题

解决方案

Hystrix熔断器

Hystrix熔断器

image-20210104115019137

Hystrix是NetFlex公司提供的一套用于分布式系统的延迟和容错的开源库。在分布式系统里,许多依赖不可避免的调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整个服务失败,避免级联故障,以提高分布式系统的弹性。

Hystrix的作用:服务降级、服务熔断、服务限流

服务降级

为了保证“核心业务”一切正常,我们可能会让一些“非核心业务”不提供它的功能,让它服务降级,直接提醒用户:“服务器当前繁忙,请稍后再试”,不让客户端等待并立刻返回一个友好提示,fallback

哪些情况会出发降级:程序运行异常、超时、服务熔断触发服务降级、线程池/信号量打满也会导致服务降级

服务熔断

类比保险丝达到最大服务访问后,直接拒绝访问,拉闸限电,然后调用服务降级的方法并返回友好提示,就是保险丝:服务的降级->进而熔断->恢复调用链路

服务限流

秒杀高并发等操作,严禁一窝蜂的过来拥挤, 大家排队,一秒钟N个,有序进行

**一般来讲:**先配置服务限流,然后再配置服务降级,进而服务熔断

**目的:**都是为了保证在高并发的情况,系统永远是可用的

熔断器的3个状态

熔断器有3个状态:CLOSEED,OPEN,HALF OPEN

image-20210104140302269

Closed

关闭状态(断路器关闭),所有请求都正常访问。代理类维护了最近调用失败的次数,如果某次调用失败,则使失败次数加1。如果最近失败次数超过了在给定时间内允许失败的阈值,
则代理类切换到断开(Open)状态。此时代理开启了一个超时时钟,当该时钟超过了该时间,则切
换到半断开(Half-Open)状态。该超时时间的设定是给了系统一次机会来修正导致调用失败的错误。

OPEN

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

Half Open

半开状态,open状态不是永久的,打开后会进入休眠时间(默认是5S)。随后断路
器会自动进入半开状态。此时会释放1次请求通过,若这个请求是健康的,则会关闭断路器,否则继续保持OPEN状态,再次进行5秒休眠计时

三个重要参数

快照时间窗、请求总数阀值、错误百分比阀值。

1:快照时间窗:断路器确定是否打开需要统计一些请求和错误数据,而统计的时间范围就是快照时间窗,默认为最近的10秒。

2:请求总数阀值:在快照时间窗内,必须满足请求总数阀值才有资格熔断。默认为20,意味着在10秒内,如果该hystrix命令的调用次数不足20次,即使所有的请求都超时或其他原因失败,断路器都不会打开。

2:请求总数阀值:在快照时间窗内,必须满足请求总数阀值才有资格熔断。默认为20,意味着在10秒内,如果该hystrix命令的调用次数不足20次,即使所有的请求都超时或其他原因失败,断路器都不会打开。

3:错误百分比阀值:当请求总数在快照时间窗内超过了阀值,比如发生了30次调用,如果在这30次调用中,有15次发生了超时异常,也就是超过50%的错误百分比,在默认设定50%阀值情况下,这时候就会将断路器打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值