分布式服务熔断,降级,限流

本文来自Sentinal官方文档
Hystrix官方文档

1. 什么是流量控制?

限流:每个服务方均有自己的处理能力,让请求方的诉求大于服务方的时候。服务方为了保证自己能够正常工作,通过限制请求量的方式将请求量控制到自己能够应对的范围内。

流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。如下图所示:

分布式服务熔断,降级,限流_第1张图片

流量控制有以下几个角度:

资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
运行指标,例如 QPS、线程池、系统负载等;
控制的效果,例如直接限流、冷启动、排队等。

2. 什么是熔断降级

降级:非正常情况的一种紧急预案,当流量激增或者其他原因导致服务器资源不够时,服务主动放弃一部分请求的处理从而快速释放资源的一种手段。
如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

服务降级:
一般是从整体负荷考虑,就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的fallback回掉,返回一个缺省值,这样做,虽然服务水平下降,但好歹,比直接挂掉要强。
服务熔断:
一般是某个服务故障或者是异常引起的,类似现实世界中的‘保险丝’,当某个异常条件被触发,直接熔断整个服务,而不是一直等到此服务超时。

由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,可能会导致请求发生堆积,进而导致级联错误。

分布式服务熔断,降级,限流_第2张图片
当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。

你可能感兴趣的:(分布式系统,分布式)