Sentinel – 流量控制(个人学习用)

Sentinel – 流量控制(个人学习用)

什么是流量控制

在sentinel官网上是这么解释的:流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器,可以根据需要把随机的请求调整成合适的形状,如下图所示:Sentinel – 流量控制(个人学习用)
简单来说就是:根据系统的处理能力,对访问该系统的流量进行控制管理来保证系统的稳定性。

流控规则

Sentinel – 流量控制(个人学习用)

资源名:

被保护的资源,即需要流量控制的请求路径

针对来源:

进行流控管理的微服务

阈值类型:

QBS:每秒最大请求数
线程数:最大并发请求数

单机阈值:

阈值类型对应的数量

流控模式:

直接:
针对当前资源进行处理

关联:
A资源关联B资源,请求发给B,如果达到阈值,那么则对A限流

链路:
以调用链路为单位做限流处理,例如:A->B->C 这个链路的总体流量只按入口A的请求量来计算

流控效果:

快速失败:
(RuleConstant.CONTROL_BEHAVIOR_DEFAULT)超出阈值规则后直接抛出异常(FlowException)。
Sentinel – 流量控制(个人学习用)

warm up(预热):
冷启动(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式。该方式主要用于系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮的情况。比如设置的阈值为100,预热时间10s,冷加载因子是3,那最初的阈值时100/3,逐步加大阈值,10s后达到100。
Sentinel – 流量控制(个人学习用)
Sentinel – 流量控制(个人学习用)

排队等待:
匀速器(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER)方式。需要设置将阈值模式设置为QPS才能生效。这种方式严格控制了请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。
Sentinel – 流量控制(个人学习用)