学习Sentinel时所作的笔记
1、限流规则
蔟点链路
默认情况下,sentinel监控的就是Controller下的方法
流控
资源名
资源的名称,默认是方法上的RequestMapping
针对来源
阈值类型
QPS与线程数两种
流控模式-直接
就是直接对该资源限流
流控模式-关联
A与B关联,B达到了阈值对A限流
关联模式一般用在有竞争的资源上,优先级高的资源达到阈值时,对优先级低的限流
流控模式-链路
可以统计从指定资源到该资源的请求。对指定入口到该资源的限流
流控效果-快速失败
直接拒绝并抛出FlowException异常
流控效果-Warm Up
对超出阈值的请求拒绝并抛出FlowException异常,但这种模式下阈值是一个缓慢增加的过程,会在预热时长内增加到最大值,
流控效果-排队等待
让请求按照请求的先后顺序排队,两个请求的间隔不能小于指定时长。例如,QPS为5,意味着每200ms会执行一个请求,timeout为2000ms,意味值预期等待最大时间为2000ms,也就是队列中最多存10个请求,超出会直接拒绝抛出异常
热点参数限流
注意:热点参数限流对默认的SpringMvc资源无效,只对加上@SentinelResource的资源有效
2、隔离和降级
Feign整合Sentinel
线程隔离
线程池隔离
对一个服务会创建一个线程池,外界的请求都会交到该线程池中去执行。
优点:支持异步调用
缺点:开销较大,线程熟练太多
场景:低扇出
信号量隔离
通过一个计数器,统计请求数量
优点:开销小
缺点:不支持异步
场景:高扇出