【SpringCloudAlibaba系列】分布式限流框架Sentinel流量控制策略| 8月更文挑战

468 阅读2分钟

这是我参与8月更文挑战的第6天,活动详情查看: 8月更文挑战

分布式限流框架Sentinel流量控制策略

调用关系流量策略

调用关系包含调用者和被调用者,一个方法可能又调用其他方法,形成一条完整的调用链。而调用关系流量策略,就是用不同的调用维度来控制。

  • 根据调用方限流
  • 根据调用链路入口限流
  • 具有关系的资源流量控制

调用方限流

根据请求来源进行流量控制,可设置limitApp属性来设置来源信息,而它有三个选项

  • default:不区分调用者,任何访问调用者的请求都会进行限流统计
  • some_origin_name:设置特定的调用者,只有被设置的指定调用者的请求都会进行限流统计
  • other:针对除了some_origin_name外的其他调用者进行流量控制

同一个资源可配置多条规则,如果多个规则设置的limitApp不一样,规则生效的顺序为some-origin_name->other->default

根据调用链路入口限流

一个被限流保护的方法,可能来自不同的调用电路,比如针对一个资源,请求入口A和请求入口B都调用该资源,Sentinel允许只根据某个入口进行限流统计,比如针对资源,设置针对请求入口A的调用才会统计请求次数,它在一定程度类似于调用方限流

关联流量控制

当两个资源之间存在依赖关系或者存在竞争时,则这两个资源存在关联,这两个存在依赖关系的资源在相关调用时,存在一个资源执行操作过于频繁而影响另外一个资源的执行效率。因此,关联流量控制是要限制其中一个资源的执行流量。

服务熔降级有以下几种参考指标
  • 平均响应时间:比如5s内持续进入25个请求,对应时刻的平均响应时间超过阈值,在接下来的固定时间窗口内,对该方法的访问都会自动熔断。
  • 异常比例:某个方法每秒调用所获得的异常总数的比例超过设置的阈值,该资源会自动进入降级状态,在固定时间窗口内,对该方法的调用会自动熔断。
  • 异常数量:某个方法在指定时间窗口内获得的异常数量超过阈值时,会自动熔断