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

背景信息

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

  • 针对一段时间内最频繁购买的商品ID进行限制,防止击穿缓存打垮数据库。
  • 针对一段时间内频繁访问的用户ID进行限制,防止恶意刷单。

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

新建热点规则

  1. 登录EDAS控制台
  2. 执行以下操作之一以进入应用详情页面:
    • 在左侧导航栏选择资源管理 > 集群,在集群页面的容器服务K8s集群页签上单击集群ID或名称,然后在集群详情页面的应用列表区域单击具体应用名称。
    • 在左侧导航栏选择应用管理 > 应用列表,在应用列表页面单击具体容器服务K8s集群应用的应用名称。
  3. 在左侧导航栏中选择限流降级 > 规则管理
  4. 单击热点规则页签,然后在页面右上角单击新增热点限流规则
  5. 新增热点限流规则对话框中,配置规则信息。
    热点限流规则
    • 接口名称:要进行热点限流的接口名称,需与埋点名保持一致。
    • 参数位置索引:热点参数的索引,对应SphU.entry(xxx, args)中的参数索引位置。例如SphU.entry(resourceName, EntryType.IN, 1, paramA, paramB)埋点中,paramA的参数索引是0,paramB的参数索引是1。
    • 统计维度
      • 通过请求数:根据统计周期内调用次数来进行限制。
      • 并发数:根据统计周期内该参数占用最大并发资源的数量进行限制。
    • 统计周期时间:统计窗口时间长度(单位为秒)。例如统计窗口时长为10秒,单机阈值为5,代表限制10秒内每个热点参数访问不超过5次。
    • 单机阈值:每个热点参数的阈值。
    • 流控效果
      • 快速失败:达到阈值时立即拦截请求。该模式下需要设置缓冲请求数,即针对突发请求额外允许的请求数目。
      • 排队等待:阈值内的请求会匀速在周期内通过,多余的请求会排队等待,等待时长超过超时时间的会立即失败。
        说明 此选项仅适用于按并发数统计的情况。
    • 是否开启:打开则表示启用该规则,关闭则表示禁用该规则。
    配置成功后,新的热点限流规则将出现在热点规则列表中。

管理规则

规则管理页面的规则列表中,您可以编辑、删除、启用、禁用、批量启用或批量禁用规则。此外,还可以针对指定参数值单独设置限流阈值。

  • 如需编辑规则,单击目标规则右侧操作列中的编辑,并按需修改规则内容。
  • 如需删除规则,单击目标规则右侧操作列中的删除,并在对话框中单击确定
  • 如需启用或禁用规则,打开或关闭目标规则右侧状态列中的开关,并在对话框中单击确定
  • 如需批量启用或禁用规则,选中要操作的一个或多个规则,单击页面底部的批量启用批量禁用,并在对话框中单击确定
  • 如需为指定参数值单独设置限流阈值,单击目标规则右侧操作列中的添加例外项,并在热点规则例外项对话框中添加例外项。
    说明 仅可为基本类型和字符串类型的参数添加例外规则。