Hystrix--熔断相关基本概念

概念性:

熔断的作用

	在分布式系统下,每个微服务无法保证自身运行永远不会出现问题,微服务间在发生
相互调用的时候可能会由于各种原因(网络异常,依赖服务挂了,依赖服务本身的问
题)出现依赖的服务出现问题。熔断主要解决上述问题,当某服务依赖的服务不可用
时,该服务不会受其影响,防止拖垮自身进而导致更多微服务的不可用(把坏的服务隔
离起来),给各服务间的调用提供保护和控制。

雪崩效应

1.由基础服务故障导致了级联故障,雪崩效应即指该大量的级联故障。

2.雪崩产生原因:
	1>下游服务不可用(网络异常,程序本身问题,负载过高,服务器宕机)
	2>上游服务发送请求,线程阻塞等待下游服务响应,请求数变多时阻塞线程占用大量
	的资源,把上游服务所在的机器资源耗尽,进而导致上游服务的机器宕机。
	3>一层层的往其他的服务消费者蔓延,不可用的服务越来越多,导致整个系统的不可
	用发生雪崩现象。

3.雪崩处理思路:
	可以对每个服务进行资源(线程池,CPU,内存等)的隔离,在此可以应用仓壁模式。
通过防止因为某个服务引起的级联故障来增强整个系统的可用性

对于仓壁模式引入官方说明:
	舱壁模式(Bulkhead)隔离了每个工作负载或服务的关键资源,如连接池、内存和
CPU。使用舱壁避免了单个工作负载(或服务)消耗掉所有资源,从而导致其他服务出
现故障的场景。这种模式主要是通过防止由一个服务引起的级联故障来增加系统的弹
性。通过应用舱壁模式,可以保护有限的资源不被耗尽。

容错机制

为防止下游服务的不可用导致的级联故障需要建立服务的容错机制。
1.设置超时
	对调用下游服务的网络请求设置一个超时时间,这样就算下游服务不可用也可以让资
	源尽快的释放。
	
2.使用断路器
	在上面设置超时时间后,如果大量的请求在超时时间内未得到响应则需要使用断路
	器(类似于保险丝)。
	
	断路器工作流程:
	1>断路器相当于对下游服务的代理,依据调用下游服务成功/失败的次数比例,来确
	定是正常请求下游服务还是直接返回降级的服务。(如果检测到调用下游服务错误的
	次数/比例达到,则对该下游服务的调用改为调用降级的服务,不在去调用下游服务,
	这样调用方就不会在等待下游服务响应这浪费资源了)
	2>断路器可以自动诊断下游服务是否恢复,如果下游的服务已经恢复正常,那就恢复
	请求该下游服务而不在走降级的服务。

	断路器状态:
	1>关闭:可以正常请求依赖的下游服务,此时代理断路器为关闭状态。
	2>打开:一定时间内请求的失败率到达阈值,断路器为打开状态。此时调用降级服务
	而不是直接请求下游服务。
	3>半开:断路器打开状态下达到重置时间后进入半开状态。在该状态下,断路器将部
	分请求打到依赖的下游服务,如果成功响应达到一定比例,则断路器置为关闭状态,
	所有服务都正常访问依赖的下游服务。

3.降级处理
	对断路器代理的下游服务出现问题时,提供降级处理(用fallback来替换主方法)用
	fallback方法代替原先的方法执行进行返回。服务降级结合断路器使用,保证了服务调
	用者的高可用性。

附:熔断降级
	共同点:
		保证服务的可用性,进而保证整个系统的可用性。
	不同点:
		熔断是因为下游服务的不可用触发的,是需要去主动监控熔断。
		降级是上游的调用者依据下游服务是否可用触发的,被动抛弃。

Hystrix

Hystrix很好的实现了超时机制和断路器,使用方便。

主要功能:
1.防止雪崩现象,为系统提供保护机制。
2.资源隔离:Hystrix为每个请求的下游服务都维护了单独的线程池,如果线程池满了,
则调用该下游服务的请求立即失败,进而防止级联故障。
3.断路器:当调用某服务失败率达到阈值时,Hystrix实现断路器的功能,断路器打开,
暂停一段时间内对该服务的请求。
4.降级:当断路器为打开状态时,直接去请求自己写的fallback,执行具体的回退降级。
5.监控:Hystrix可以实时监控运行指标和配置的变化进行报警方便运维处理。
6.自我修复:断路器为半开状态下,进行服务恢复处理(详见断路器状态中的半开状
态)
7.快速失败:当Fail Fast错误时直接返回失败,不请求真正的服务。

猜你喜欢

转载自blog.csdn.net/weixin_49442658/article/details/111178765