四.Sentinel的规则
1.流控规则
1.1流控规则有哪些?
流量控制有以下几个角度:
- 资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
- 运行指标,例如 QPS(每秒查询率)、线程池、系统负载等;
- 控制的效果,例如直接限流、冷启动、排队等。
Sentinel 的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想要的效果。
资源名:
唯一的资源名称,默认是接口路径,也可以自定义.
针对来源:
指定对哪个微服务进行限流,这里填写服务名,默认是default,表示不区分来源。
阈值类型:
QPS: 每秒请求数,当调用当前接口的每秒请求数达到阈值,则限流
线程数:当调用当前接口的线程数达到阈值,则限流。
流控模式:
**直接:**当前资源达到限流条件时,开启限流。
关联: 当关联的资源达到限流条件时,开启限流.
例如存在资源 A和B,A资源依赖B资源,当B资源达到阈值,则限流A。
比如支付模块B达到阈值,则限流订单模块A,因为支付已经达到上限了,过量的订单会使得支付压力更大,需要限流。
**链路:**只针对从指定链路访问到本资源的请求做统计,判断是否达到限流条件时,开启限流.
例如有两条请求链路:
/query /queryUsers
/save /queryUsers
如果只限制从/search进入到/goods的请求,就可以设置链路模式.
流控效果
快速失败
预热Warm UP
排队等待
1.2流控模式
1.直接模式
上面已演示
2 关联模式的使用
1.添加测试代码
2.添加流控规则
当关联资源/pay的阈值达到3时,资源/addOrder被流控
3.模拟关联资源/pay超过阈值