为应用配置热点规则后,SAE将分析资源调用过程中调用次数高的参数,并根据配置的热点规则对包含热点参数的资源调用进行限流,保障系统的稳定性。本文介绍配置热点规则的操作步骤。
前提条件
请确保您的Java应用已开启限流降级功能,详情请参见
设置限流降级。
背景信息
热点即经常被访问的数据。例如在以下场景中需要统计某个热点数据中访问频次最高的Top数据,并对其访问进行限制。
- 针对一段时间内最频繁购买的商品ID进行限制,防止击穿缓存而导致大量请求到数据库的情形。
- 针对一段时间内频繁访问的用户ID进行限制,防止恶意刷单。
AHAS利用LRU(Least Recently Used)策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。
操作步骤
- 登录SAE控制台。
- 在左侧导航栏单击应用列表,在应用列表页面上方选择地域,单击具体应用名称。
- 在左侧导航栏中选择。
- 在规则管理页面,单击热点规则,在热点规则页签,单击新增热点限流规则。
- 在新增热点限流规则对话框,设置参数,单击新建。
参数说明如下:
参数 |
描述 |
接口名称 |
适用该规则的资源名称,与埋点传入的资源名保持一致。 |
参数位置索引 |
埋点传入参数的索引位置。对应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)时,新到来的请求将会直接被拒绝。
|
问题反馈
如果您在使用SAE过程中有任何疑问,欢迎您扫描下面的二维码加入钉钉群进行反馈。