为应用配置热点规则后,MSE将分析统计参数,即资源调用过程中的调用次数较高的参数,并根据配置的热点规则对包含热点参数的资源调用进行限流,保护系统稳定性。本文介绍如何为应用配置热点规则。
背景信息
热点即经常被访问的数据。例如在以下场景中需要统计某个热点数据中访问频次最高的Top数据,并对其访问进行限制。
针对一段时间内最频繁购买的商品ID进行限制,防止击穿缓存而导致大量请求到数据库的情形。
针对一段时间内频繁访问的用户ID进行限制,防止恶意刷单。
MSE利用LRU(Least Recently Used)策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。
功能入口
登录MSE治理中心控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择治理中心 > 应用治理。
在应用列表页面,单击目标应用的资源卡片。
进入应用之后,选择以下任意一种方法新建流控规则:
在左侧导航栏,选择接口详情。单击RPC服务页签,选择接口。在右侧单击热点参数防护(RPC)页签,然后单击新增热点参数防护(RPC)规则。
在左侧导航栏,选择流量治理。单击流量防护页签,再单击热点参数防护(RPC)页签,然后单击新增热点参数防护(RPC)规则。
在新增热点参数防护(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 方法 |
统计维度 | 可选择通过请求数或并发线程数。
|
统计周期时间 | 统计窗口时间长度(单位为秒)。例如统计窗口时长为10s,QPS阈值为5代表限制10s内每个热点参数访问不超过5次。 |
单机阈值 | 作用于每个热点参数的阈值。 |
流控效果 | 当统计维度为通过请求数时,可以选择流控效果来处理被拦截的流量。
|