Sentinel流量控制

1、Sentinel微服务限流

Sentinel流量控制(flow control)的原理是监控应用流量的QPS或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

QPS:每秒的请求数。当每秒请求数超过指定阈值之后对当前请求进行限流。
并发线程数:当服务器中创建线程数超过指定阈值之后对当前请求进行限流。

2、QPS限流

2.1 配置QPS限流

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.2 测试

每秒最大只能接收2个请求,超过2个报错
在这里插入图片描述

3、线程数限流

3.1 配置线程数限流

在这里插入图片描述

3.2 测试

这里使用压力测试工具apache-jmeter-5.2
下载链接:https://download.csdn.net/download/qq_43753724/22032153?spm=1001.2014.3001.5501
配置线程组:
在这里插入图片描述
配置http请求:
在这里插入图片描述
发起请求并在察看结果树中查看
在这里插入图片描述
可以看出,有一个请求没来得及处理。

4、流控模式

4.1 流控模式说明

  • 直接:标识流量控制规则到达阈值直接触发流量控制
  • 关联: 当两个资源之间具有资源争抢或者依赖关系的时候,这两个资源便具有了关联。比如对数据库同一个字段的读操作和写操作存在争抢,读的速度过高会影响写得速度,写的速度过高会影响读的速度。如果放任读写操作争抢资源,则争抢本身带来的开销会降低整体的吞吐量。可使用关联限流来避免具有关联关系的资源之间过度的争抢,举例来说,read_db 和 write_db 这两个资源分别代表数据库读写,我们可以给 read_db 设置限流规则来达到写优先的目的:设置 strategy 为 RuleConstant.STRATEGY_RELATE 同时设置 refResource 为 write_db。这样当写库操作过于频繁时,读数据的请求会被限流。
    在这里插入图片描述
  • 链路:https://github.com/alibaba/Sentinel/wiki/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6

5、流控效果(只适用于QPS限流):

  • 直接拒绝:默认的流量控制方式,当QPS超过任意规则的阈值之后,新的请求就被立即拒绝,拒绝方式为抛出FlowException。
  • Warm Up:预热/冷启动方式。在系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过冷启动让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。
  • 匀速排队:严格控制请求通过的间隔时间,即让请求以均匀的速度通过,对应的是漏桶算法。
posted @   别团等shy哥发育  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示