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

前提条件

  • 已开通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. 单击页面右上角的申请Token Server集群
  3. 集群基本信息页面,填写集群名称等信息。
    参数 描述
    集群名称 填写集群的名称。集群名称应包含1~63个字符,可包含数字、汉字、英文字符或连字符(-)。
    应用名称 选择需要进行集群流控的应用,可多选。
    最大QPS 该集群内需要流控的接口预估的最大QPS,代表可能到来的最大流量,而非限流阈值,用于为Token Server自动分配提供参考。流量超出该值后流控策略会退化到单机模式。
  4. 单击下一步,集群创建成功。
  5. 集群规则配置区域,单击添加,进入规则配置页面,为目标应用添加规则。
    集群流控规则
    参数 描述
    应用名称 选择要添加规则的应用。
    资源名称 选择资源名称。
    阈值模式 选择阈值模式:
    • 总体阈值模式下配置的阈值等同于该调用在整个集群的总阈值。
    • 单机均摊模式下配置的阈值等同于单机能够承受的限额,Token Server会根据连接数来计算总的阈值,例如3个Client连接到了Token Server,配置的单机均摊阈值为10,则集群流控总量就为30。
    总体阈值 当阈值模式选择总体阈值时,配置此选项,表示整个集群的总阈值。
    均摊阈值 当阈值模式选择单机均摊模式时,配置此选项,表示单机能够承受的限额。
    统计窗口时长 集群流控统计的时间窗口长度,取值范围为1秒~24小时。
    接口集群总QPS 该接口预估的集群最大QPS,代表可能到来的最大流量,需大于总体阈值,用于为Token Server自动分配提供参考。所有规则的接口集群总QPS的总和不超过集群的总QPS,即在集群基本信息页面设置的最大QPS
    说明 预估总QPS不要配置过低,流量超出该值会退化到单机模式。
    通信请求模式 选择通信请求的模式:
    • 每次请求:每次集群流控检查都会请求Token Server获取Token,通常会有几毫秒的耗时,适用于单机QPS<200的场景。
    • 批量请求:AHAS会聚集一部分请求后再批量请求Token Server,这样可以减少请求Token Server的频率,但会降低准确性。
      说明
      • SDK版本≥1.6.4以上支持批量请求模式。
      • Token Client与Server的通信默认超时时间为20ms。公网环境接入端与Token Server通常存在一定的网络通信延迟,因此可能会出现超时导致退化到单机的情况。若接口的单机QPS超过200,请将通信请求模式设置为批量请求。若单机QPS超过1000,建议考虑配置单机限流。
    失败退化策略 当出现连接失败、通信失败或Token Server不可用等情况时,流控规则是退化到单机限流的模式或是直接通过忽略失败情况:
    • 退化到单机限流:当出现通信失败的情况时,退化到设置的单机阈值来进行流控。需要在规则中配置单机退化阈值,代表单机的兜底阈值。
    • 直接通过:当出现通信失败的情况时,请求直接通过。
    单机退化阈值 代表单机的兜底阈值,当失败退化策略选择退化到单机限流时,需要设置此选项。
  6. 单击新建,完成规则创建。
  7. (可选)若还需要继续为其他应用添加规则,单击添加,添加规则。