Sentinel控制台配置流控规则

1,资源名

唯一名称,默认为请求路径。

2,针对来源

Sentinel可以针对调用者进行限流,默认default(不区分来源)

3,阀值类型/单机阀值:

  • QPS(每秒钟的请求数量):当调用该api的QPS达到阀值的时候,进行限流。
  • 线程数:当调用api的线程数达到阀值的时候,进行限流。

4,是否集群:

默认不需要集群。

5,流控模式

  • 直接:当QPS超过阀值就进行限流。
  • 关联:当关联的资源达到阀值,就限流自己。
  • 适用场景:查询和修改同一表的数据,如果是高并发的应用,查询接口的流量过大,就会影响修改接口的性能,反之同理,这就可以根据业务需求,去衡量希望优先读还是优先写。
  • 关联其实是一种保护关联资源的设计。
  • 链路:只记录指定链路上的流量,即指定资源从入口资源进来的流量如果达到阀值就限流。
  • 链路其实是一种细粒度的针对来源,而编辑流控制中的针对来源输入框是微服务级别的,可以指定微服务过来流量达到阀值就限流。
  • 而链路是api级别的,指定的是api的调用流量达到阀值就限流。

Sentinel 限流 java sentinel 限流 工作位置_微服务

 

Sentinel 限流 java sentinel 限流 工作位置_微服务_02

  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

Sentinel 限流 java sentinel 限流 工作位置_限流_03

Sentinel 限流 java sentinel 限流 工作位置_微服务_04

Sentinel 限流 java sentinel 限流 工作位置_限流_05