为应用配置热点规则后,SAE将分析资源调用过程中调用次数高的参数,并根据配置的热点规则对包含热点参数的资源调用进行限流,保障系统的稳定性。本文介绍配置热点规则的操作步骤。

前提条件

请确保您的Java应用已开启限流降级功能。具体步骤,请参见设置限流降级

背景信息

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

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

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

使用说明

热点规则的使用说明和常见场景,请参见配置热点规则

操作步骤

  1. 登录SAE控制台
  2. 在左侧导航栏单击应用列表,在应用列表页面上方选择地域,单击具体应用名称。
  3. 在左侧导航栏中选择限流降级(仅支持Java) > 规则管理
  4. 规则管理页面,单击热点规则,在热点规则页签,单击新增热点限流规则
  5. 新增热点限流规则对话框,设置参数,单击新建
    新增热点限流规则

    参数说明如下:

    参数 描述
    接口名称 适用该规则的资源名称,与埋点传入的资源名保持一致。
    参数位置索引 埋点传入参数的索引位置。对应SphU.entry(xxx,args)中的参数索引位置。例如SphU.entry(resourceName,Entry Type.IN,1,paramA,paramB)埋点中,paramA的参数索引是0,paramB的参数索引是1。
    统计维度 可选择通过请求数或并发线程数。
    • 通过请求数:限制一段时间内的调用次数。
    • 并发数:限制该资源调用的并发数。
    统计周期时间 统计窗口时间长度(单位为秒)。例如统计窗口时长为10s,QPS阈值为5代表限制10s内每个热点参数访问不超过5次。
    单机阈值 是作用于每个热点参数的阈值。
    流控效果 统计维度通过请求数时,可以选择流控效果来处理被拦截的流量。
    • 快速失败:达到阈值时,立即拦截请求。该模式下可以额外设置一个缓冲请求数,即针对突发请求额外允许的请求数目。
    • 排队等待:请求匀速通过,允许排队等待,通常用于消息队列削峰填谷等场景。需设置具体的超时时间,排队时会计算预计的排队时长,若超过最大超时时间则请求会直接被拒绝。例如,单机阈值配置为5,则代表请求每200 ms才能通过一个,多出的请求将排队等待通过。超时时间配置1000 ms,则当前排队请求超过5个(>1000 ms)时,新到来的请求将会直接被拒绝。