Sentinel流量控制

举报
别团等shy哥发育 发表于 2023/02/04 11:46:26 2023/02/04
【摘要】 @toc 1、Sentinel微服务限流Sentinel流量控制(flow control)的原理是监控应用流量的QPS或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。QPS:每秒的请求数。当每秒请求数超过指定阈值之后对当前请求进行限流。并发线程数:当服务器中创建线程数超过指定阈值之后对当前请求进行限流。 2、QPS限流 2.1 配置...

@toc

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/流量控制

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

  • 直接拒绝:默认的流量控制方式,当QPS超过任意规则的阈值之后,新的请求就被立即拒绝,拒绝方式为抛出FlowException。
  • Warm Up:预热/冷启动方式。在系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过冷启动让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。
  • 匀速排队:严格控制请求通过的间隔时间,即让请求以均匀的速度通过,对应的是漏桶算法。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。