Sentinel控制台配置流控规则
1,资源名
唯一名称,默认为请求路径。
2,针对来源
Sentinel可以针对调用者进行限流,默认default(不区分来源)
3,阀值类型/单机阀值:
- QPS(每秒钟的请求数量):当调用该api的QPS达到阀值的时候,进行限流。
- 线程数:当调用api的线程数达到阀值的时候,进行限流。
4,是否集群:
默认不需要集群。
5,流控模式
- 直接:当QPS超过阀值就进行限流。
- 关联:当关联的资源达到阀值,就限流自己。
- 适用场景:查询和修改同一表的数据,如果是高并发的应用,查询接口的流量过大,就会影响修改接口的性能,反之同理,这就可以根据业务需求,去衡量希望优先读还是优先写。
- 关联其实是一种保护关联资源的设计。
- 链路:只记录指定链路上的流量,即指定资源从入口资源进来的流量如果达到阀值就限流。
- 链路其实是一种细粒度的针对来源,而编辑流控制中的针对来源输入框是微服务级别的,可以指定微服务过来流量达到阀值就限流。
- 而链路是api级别的,指定的是api的调用流量达到阀值就限流。
6,流控效果
- 快速失败:直接失败,抛出异常。相关源码:com.alibaba.csp.sentinel.slots.block.flow.controller.DefaultController
- Warm Up(预热):根据coldFactor(冷加载因子,默认值为3),从阀值/coldFactor,经过预热时长,才达到设置的QPS阀值。即如果阀值为100,冷加载因子为3,预热时长为10秒,那么就会用100/3作为最初的阀值,经过10秒之后才会将阀值达到100,进而进行限流,意思就是让允许通过的流量缓慢增加,在达到一定的时间之后才达到阀值这样会更好的保护微服务。
- 排队等待:匀速排队,让请求以均匀的速度通过,阀值类型必须设置成QPS,否则无效。此种模式可适用于应对突发流量的场景。相关源码:com.alibaba.csp.sentinel.slots.block.flow.controller.RateLimiterController