配置热点参数防护规则(RPC 请求)

为应用配置热点规则后,MSE将分析统计参数,即资源调用过程中的调用次数较高的参数,并根据配置的热点规则对包含热点参数的资源调用进行限流,保护系统稳定性。本文介绍如何为应用配置热点规则。

背景信息

热点即经常被访问的数据。例如在以下场景中需要统计某个热点数据中访问频次最高的Top数据,并对其访问进行限制。

  • 针对一段时间内最频繁购买的商品ID进行限制,防止击穿缓存而导致大量请求到数据库的情形。

  • 针对一段时间内频繁访问的用户ID进行限制,防止恶意刷单。

MSE利用LRU(Least Recently Used)策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。

功能入口

  1. 登录MSE治理中心控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择治理中心 > 应用治理

  3. 应用列表页面,单击目标应用的资源卡片。

  4. 进入应用之后,选择以下任意一种方法新建流控规则:

    • 在左侧导航栏,选择接口详情。单击RPC服务页签,选择接口。在右侧单击热点参数防护(RPC)页签,然后单击新增热点参数防护(RPC)规则

    • 在左侧导航栏,选择流量治理。单击流量防护页签,再单击热点参数防护(RPC)页签,然后单击新增热点参数防护(RPC)规则

  5. 新增热点参数防护(RPC)规则对话框中配置规则信息。单击新增

    参数说明,请参见更多信息

示例场景1:秒杀场景

秒杀等抢购商品的时候,由于流量较大会导致系统响应不及时,甚至系统崩溃。为保证系统的稳定性,可配置热点规则,超过一定量的阈值后,系统会让购买热点商品的流量排队等待。

例如购买同一商品,1s内调用超过100次请求后,则其余请求进行等待。在新增热点参数防护(RPC)规则对话框中配置以下规则信息。

  • 填写接口名称

  • 参数位置索引填写埋点传入参数的索引位置,对应实际的 RPC 方法com.aliyun.demo:methodA(param0, param1, ……)中的参数索引位置,从0开始。

  • 统计维度选择通过请求数

  • 统计周期时间设置为1s,单机阈值设置为100。

  • 流控效果选择排队等待

  • 超时时间设置为30ms。

1s内调用此接口超过100次,多余的请求要进行排队等待,等待时长超过30ms的请求就会立即失败。

示例场景2:调用请求频繁,占用较多系统资源

在秒杀场景下,有时候还需要修改下单地址,当调用修改请求较多时,会占用写数据库较多资源,您可以对其进行热点快速失败的处理,稍后再修改。在新增热点参数防护(RPC)规则对话框中配置以下规则信息。

  • 填写接口名称

  • 参数位置索引填写埋点传入参数的索引位置,对应实际的 RPC 方法com.aliyun.demo:methodA(param0, param1, ……)中的参数索引位置,从0开始。

  • 统计维度选择并发数

  • 统计周期时间设置为1s,单机阈值设置为100。

  • 流控效果选择快速失败

表示1s内只能最多处理100个并发请求,其余超出的请求都会快速失败。

配置项说明

新增热点参数防护(RPC)规则对话框配置项说明如下。

参数

描述

接口名称

适用该规则的资源名称,与埋点传入的资源名保持一致。

参数位置索引

埋点传入参数的索引位置。对应实际的 RPC 方法com.aliyun.demo:methodA(param0, param1, ……)中的参数索引位置,从0开始。param0的参数索引是0,param1的参数索引是1。

统计维度

可选择通过请求数或并发线程数。

  • 通过请求数:限制一段时间内的调用次数。

  • 并发数:限制该资源调用的并发数。

统计周期时间

统计窗口时间长度(单位为秒)。例如统计窗口时长为10s,QPS阈值为5代表限制10s内每个热点参数访问不超过5次。

单机阈值

作用于每个热点参数的阈值。

流控效果

统计维度通过请求数时,可以选择流控效果来处理被拦截的流量。

  • 快速失败:达到阈值时,立即拦截请求。该模式下可以额外设置一个缓冲请求数,即针对突发请求额外允许的请求数目。

  • 排队等待:请求匀速通过,允许排队等待,通常用于消息队列削峰填谷等场景。需设置具体的超时时间,排队时会计算预计的排队时长,若超过最大超时时间则请求会直接被拒绝。例如,单机阈值配置为5,则代表请求每200 ms才能通过一个,多出的请求将排队等待通过。超时时间配置1000 ms,则当前排队请求超过5个(>1000 ms)时,新到来的请求将会直接被拒绝。