Sentinel-限流规则(流控模式:直接、关联、链路)
Sentinel
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
项目地址:https://gitcode.com/gh_mirrors/sentine/Sentinel
免费下载资源
·
一、流控模式-直接
添加规则:
测试例子分析:
启动测试
点击 察看结果树
上面测试例子,到Sentinel控制台的实时监控可以看到
二、流控模式-关联
•
关联模式
:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流
•
使用场景
:比如用户支付时需要修改订单状态,同时用户要查询订单。查询和修改操作会争 抢数据库锁,产生竞争。业务需求是有限支付和更新订单的业务,因此当修改订 单业务触发阈值时,需要对查询订单业务限流。
当/write资源访问量触发阈值时,就会对/read资源限流,避免影响/write资源。
案例:
需求:
•在OrderController新建两个端点:/order/query和/order/update,无需实现业务
•配置流控规则,当/order/ update资源被访问的QPS超过5时,对/order/query请求限流
1. 编写测试controller方法:
2. 添加规则(想给谁限流,就给谁添加规则)
3. 借助JMeter进行测试:
4. 去网页访问验证:
query被限流
5. 总结: 满足下面条件可以使用关联模式
1. 两个有竞争关系的资源
2. 一个优先级较高,一个优先级较低(优先级高的触发阈值时(本案例的order),对优先级低的限流(本案例的query))
三、流控模式-链路
案例:
1. 编写测试代码:
2. 注意:
Sentinel默认只标记Controller中的方法为资源,如果要标记其它方法,需要利用@SentinelResource注解
去配置文件里配置,关闭context,就可以让controller里的方法单独成为一个链路;不关闭context的话,controller里的方法都会默认进去sentinel默认的根链路里,这样就只有一条链路,无法流控链路模式
3. 启动之后,并到网页里分别访问了/order/query和/order/save接口后
4. 添加规则:(对query做限制,save没有做限制)
5. 借助JMeter来测试:
启动测试
GitHub 加速计划 / sentine / Sentinel
19
6
下载
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
最近提交(Master分支:4 个月前 )
195150bc
* fix issue 2485 which occur oom when using async servlet request.
* optimize imports
* 1. fix the same issue in the webmvc-v6x
2. improve based on review comments 3 个月前
b78b09d3
3 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)