一、流控模式-直接

添加规则:

 

测试例子分析:

 启动测试

点击 察看结果树

 上面测试例子,到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 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐