集群流控可以控制某个服务调用整个集群的实时调用量,可以解决因流量不均匀导致总体限流效果不佳的问题。集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,更好地发挥流量防护的效果。本文主要介绍设置集群流控的操作步骤。

前提条件

  • 已开通AHAS专业版,若没有开通,请进入开通页面
  • SDK版本≥1.6.0,Agent版本≥1.7.5。

背景信息

集群流控通常适用于以下场景:
  • 单机流量不均:由于负载不均衡等原因导致每台机器的流量不均,这时使用单机流控可能会出现没有达到请求总量,某些机器就开始限流的情况。
  • 集群小流量流控:某些高可用防护场景下需要将服务调用QPS限制到很小的量,此时平均到每台机器的QPS可能小于1,无法通过单机流控进行精确控制。例如希望限制总QPS为50,但节点数有100个。
说明 Token Client与Server的通信会带来一定的网络开销,响应时间可能会上升2 ms~5 ms左右。

步骤一:选择档位创建集群

  1. 登录AHAS控制台,然后在页面左上角选择地域
  2. 在控制台左侧导航栏中选择流量防护 > 应用防护
  3. 应用防护页面单击目标应用卡片。
  4. 在应用防护管理页左侧导航栏单击集群流控
  5. 单击集群最大总QPS区域的创建,选择集群最大QPS档位

    最大QPS表示需要流控的接口所能承载的预估的最大QPS,代表可能到来的最大流量,流量超出该值后流控策略会退化到单机模式。各档位值范围如下表所示。

    档位 QPS范围 阈值范围
    入门级 0~10000 0~5000
    初级 10000~20000 5000~15000
    中级 20000~30000 15000~25000
    高级 30000~40000 25000~35000
    专业级 40000~50000 35000~45000
    选定档位并创建集群后,系统会自动为该应用分配集群的Token Server。
  6. 单击Token Client设置区域操作列的修改,设置Token请求超时时间,然后单击确定
    说明
    • AHAS Sentinel Client 1.6.0及以上版本支持设置Token Client。
    • Token请求超时时间的取值范围为(0,10000]。

步骤二:设置集群流控规则

  1. 在应用防护管理页左侧导航栏单击规则设置,单击新增流控规则
  2. 新增流控规则对话框,开启是否集群流控,并设置相关参数。
    集群流控
    参数 描述
    接口名称 设置接口名称。
    是否集群流控 开启此开关,即对集群内此资源的调用总量进行限制。
    是否开启 开启此开关,规则即生效;关闭此开关,规则不生效。
    集群阈值 表示该接口的限流阈值。
    统计窗口时长 集群流控统计的时间窗口长度,取值范围为1秒~24小时。
    失败退化策略 当出现连接失败、通信失败或Token Server不可用等情况时,流控规则是退化到单机限流的模式或是直接通过忽略失败情况:
    • 退化到单机限流:当出现通信失败的情况时,退化到设置的单机阈值来进行流控。需要在规则中配置单机退化阈值,代表单机的兜底阈值。
    • 直接通过:当出现通信失败的情况时,请求直接通过。
    退化单机阈值 代表单机的兜底阈值,当失败退化策略选择退化到单机限流时,需要设置此选项。
    通信请求模式 选择通信请求的模式:
    • 每次请求:每次集群流控检查都会请求Token Server获取Token,通常会有几毫秒的耗时,适用于单机QPS<200的场景。
    • 批量请求:AHAS会聚集一部分请求后再批量请求Token Server,这样可以减少请求Token Server的频率,但会降低准确性。
      说明
      • SDK版本≥1.6.4以上支持批量请求模式。
      • Token Client与Server的通信默认超时时间为20 ms。公网环境接入端与Token Server通常存在一定的网络通信延迟,因此可能会出现超时导致退化到单机的情况。若接口的单机QPS超过200,请将通信请求模式设置为批量请求。若单机QPS超过1000,建议考虑配置单机限流。
  3. 单击新建,完成规则创建。
    创建规则完成后,可以在规则设置页面查看到创建的集群流控规则,阈值模式集群总体集群流控new2.png