集群流控可以控制某个服务调用整个集群的实时调用量,可以解决因流量不均匀导致总体限流效果不佳的问题。集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,更好地发挥流量防护的效果。本文主要介绍设置集群流控的操作步骤。
背景信息
集群流控通常适用于以下场景:
- 单机流量不均:由于负载不均衡等原因导致每台机器的流量不均,这时使用单机流控可能会出现没有达到请求总量,某些机器就开始限流的情况。
- 集群小流量流控:某些高可用防护场景下需要将服务调用QPS限制到很小的量,此时平均到每台机器的QPS可能小于1,无法通过单机流控进行精确控制。例如希望限制总QPS为50,但节点数有100个。
- 有业务含义的流量控制:例如限制某个API每个用户每分钟调用不超过10次。
说明 Token Client与Server的通信会带来一定的网络开销,响应时间可能会上升2 ms~5 ms左右。
步骤一:选择档位创建集群
- 登录MSE治理中心控制台。
- 在左侧导航栏选择。
- 在应用防护页面,单击目标应用操作列的应用防护。
- 在应用防护管理页左侧导航栏单击集群流控。
- 在集群流控资源配置区域内,选择集群类型为生产,然后滑动指针选择集群流控的总配置量级,单击创建,然后在对话框中单击确认。
总配置量级即最大QPS,表示需要流控的接口所能承载的预估的最大QPS,代表可能到来的最大流量。
说明 实际流量(无论是否被流控)超出配置的最大QPS后,流控策略会退化到单机模式。为保证流控效果,阈值之和上限为配置最大QPS的95%,例如最大QPS选择100000 ,则所有规则阈值之和最大值为95000。
选定总配置量级档位并创建集群后,系统会自动为该应用分配集群的Token Server。
- 可选:单击Token Client设置区域操作列的编辑,设置Token请求超时时间,然后单击确定。
在某些场景下,集群流控Client与Token Server之间的网络通信时延较高,需要调整超时时间。
说明
Token请求超时时间单位为ms,取值范围为(0,10000],一般不建议超过20 ms。公网环境网络延时较高,建议设置超时时长约为50 ms,但不建议超过80 ms。
步骤二:设置集群流控规则
- 在应用防护管理页左侧导航栏单击规则管理,选择目标方案页签,单击流控规则页签,然后单击新增流控规则。
- 在新增流控规则对话框,开启是否集群流控,并设置相关参数。
参数 |
描述 |
示例 |
接口名称 |
设置接口名称。 |
function_9 |
是否集群流控 |
开启此开关,即对集群内此资源的调用总量进行限制。 |
开启 |
是否开启 |
开启此开关,规则即生效;关闭此开关,规则不生效。 |
开启 |
集群阈值 |
表示该接口的限流阈值。 |
100 |
统计窗口时长 |
集群流控统计的时间窗口长度,取值范围为1秒~24小时。 |
1秒 |
失败退化策略 |
当出现连接失败、通信失败或Token Server不可用等情况时,流控规则是退化到单机限流的模式或是直接通过忽略失败情况:
- 退化到单机限流:当出现通信失败的情况时,退化到设置的单机阈值来进行流控。需要在规则中配置单机退化阈值,代表单机的兜底阈值。
- 直接通过:当出现通信失败的情况时,请求直接通过。
|
退化到单机限流 |
退化阈值自动调整 |
开启后会自动调整退化阈值,默认关闭。
|
关闭 |
退化单机阈值 |
代表单机的兜底阈值,当失败退化策略选择退化到单机限流时,需要设置此选项。 |
10 |
自动调整增量值 |
当开启退化阈值自动调整时,需要设置自动调整的增量。这是在根据接口阈值与应用机器数量计算出的单机均摊流量基础上,用来提供保护退化阈值的一个增量。即单机均摊流量加上增量值为实际生效退化阈值。 |
2 |
- 单击新建,完成规则创建。
创建规则完成后,可以在
规则设置页面查看到创建的集群流控规则,
阈值模式为
集群总体。