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

MSE的热点参数防护规则(HTTP 请求)面向提供Web服务的应用,针对访问请求中的一些参数项进行精细化的流量控制。对于使用了主流Web框架(Servlet容器、Spring Web、Spring Boot)的应用,MSE实现了API粒度的请求参数解析,通过配置热点参数防护规则(HTTP 请求),可以对请求中IP、Host、Header、URL Param等参数维度的资源调用进行流量控制,保护业务与系统的稳定性。本文介绍如何为应用配置热点参数防护规则(HTTP 请求)。

说明

热点参数防护规则(HTTP 请求)为原Web防护规则。

背景信息

在提供Web服务的场景下,除了API维度的限流降级防护,针对访问请求来源IP、访问请求Param参数等资源调用的限流防护是各种业务场景下能更好保证业务应用正常运行的手段。例如,在一些大流量的Web业务场景下,不仅需要对当前接口进行限制,而且需要针对当前访问频次最高的来源IP或访问频次最高的商品ID,有针对性地对其访问进行限制,本示例如下:

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

  • 对一段时间内频繁大量访问的来源IP进行限制,防止利用虚假信息恶意刷单。

功能入口

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

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

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

  4. 进入应用之后,在左侧导航栏,单击接口详情。单击热点参数防护(HTTP 请求)页签,然后单击新增热点参数防护(HTTP 请求)

  5. 新增热点参数防护(HTTP 请求)对话框,配置规则信息,完成配置后单击新增

    参数说明,请参见配置项说明

  6. 在规则列表选择对应的规则,并在状态栏下单击开启

  7. 温馨提示对话框,单击确认,开启已配置的防护规则。

示例场景1:热点商品秒杀

在秒杀等抢购商品的场景下,由于流量较大,可能会导致系统响应不及时甚至崩溃。为保证系统稳定,可配置热点参数防护规则,超过一定阈值后,系统会拒绝多余的热点商品流量。

例如购买同一商品,希望1秒内同个商品超过100次请求后,对多余的请求进行拒绝,可在新增热点参数防护(HTTP 请求)对话框中配置以下规则信息,表示1秒内,针对热点商品ID进行下单的请求,每个单独商品ID每秒最多只能允许100个请求,其余超出的当前商品下单请求都会被拒绝,返回自定义的信息。

  • 参数属性选择URL参数

    说明

    在参数属性中,选择当前热点商品ID所对应的参数字段,例如,假设URL参数中存在一个stockId字段对应请求的商品ID,那么参数属性可以选择URL参数,并在参数名称中填写属性在请求中对应的字段名称。

  • URL参数名称输入stockId。

  • 阈值输入100个请求/每

  • 流控方式选择快速失败

示例场景2:防止恶意刷单

例如在促销活动中,某些恶意刷单请求较多的时候,会占用较多商品库存或服务器资源。这种情况下可以针对其IP来源进行排队等待的处理,使访问请求匀速通过,防止过量的请求对服务稳定性产生影响。

新增热点参数防护(HTTP 请求)对话框中配置以下规则信息,表示每个不同来源IP调用此接口的请求会以每10 ms一个的速度匀速通过(1s/100=10 ms),后续多余的请求要进行排队等待。排队中的请求如果等待时长超过30 ms就会立即失败。

  • 参数属性选择Client IP

  • 阈值类型默认选择请求数

  • 阈值输入100个请求/每

  • 流控方式选择排队等待

  • 超时时间输入30。

  • 是否开启选择开启。

配置项说明

新增热点参数防护(HTTP 请求)对话框配置项说明如下。

参数

说明

配置防护规则

参数属性

针对所选API的参数属性进行流量控制:

  • Client IP:请求端的IP地址。

    说明

    若请求经过代理,会优先尝试从X-Forwarded-For请求头中获取IP信息,如果其IP信息存在,将会使用该IP作为实际请求端IP地址。

  • Remote Host:请求端的Host Header。

  • Header:根据指定的HTTP Header进行解析,如果填写某个具体的Header Key,则该规则针对这个Header Key下面的热点值分别进行限制。选择Header后,可选择配置请求属性值的匹配策略,只有匹配该模式的请求属性值会纳入统计和流控。

  • URL参数:根据指定的HTTP请求参数进行解析,需要填写对应的参数名称。选择URL参数后,可选择配置请求属性值的匹配策略,只有匹配该模式的请求属性值会纳入统计和流控。

(可选)匹配模式和匹配串

若选择参数属性为HeaderURL参数,可打开属性值匹配开关,并设置匹配模式匹配串

匹配模式

  • 精确:严格按照给定的匹配串来匹配值。

  • 字串:若请求属性值包含该子串匹配成功,比如若子串设置匹配ab,则aba和cabc都可以匹配,而cba则不能匹配。

  • 正则:按给定的正则表达式匹配串进行匹配。

阈值类型

默认为请求数

阈值

触发对流控接口的统计维度对象的QPS阈值。设置时,需选择统计时间间隔,支持秒、分钟、小时和天四种维度。

例如,若阈值填写为10,统计间隔选择,则表示每分钟对应的请求数目不超过10个。

高级选项

流控方式

  • 快速失败:当阈值类型为QPS时,被拦截的流量将快速失败,即达到阈值时,立即拦截请求。

    说明

    被拦截拒绝掉的请求,将返回行为管理中配置的自定义信息,若未配置会返回默认行为,即429错误码加上默认文本信息。

  • 排队等待:当阈值类型为QPS时,被拦截的请求将匀速通过,允许排队等待。需设置具体的超时时间,预计达到超时时间的请求会立即失败,而不会排队。例如,QPS配置为10,则代表请求每100 ms才能通过一个,多出的请求将排队等待通过。超时时间代表最大排队时间,超出最大排队时间的请求将会直接被拒绝。

    说明

    排队等待时,QPS不要超过1000(请求间隔1 ms)。

Burst size

流控方式选择为快速失败时,可以额外设置一个Burst Size,即针对突发请求额外允许的请求数目。

超时时间

流控方式选择为排队等待时,需设置具体的超时时间,单位为ms。例如,QPS配置为5,则代表请求每200 ms才能通过一个,多出的请求将排队等待通过。超时时间代表最大排队时间,超出最大排队时间的请求将会直接被拒绝。

是否开启

  • 开启:热点参数防护规则(HTTP 请求)创建后即生效。

  • 关闭:热点参数防护规则(HTTP 请求)创建后不生效。

配置防护行为

关联行为

  • 默认行为:默认为此选项。

    说明
    • 如您无需自定义限流后处理行为,选择默认行为即可。

    • 默认行为为返回429错误码加上默认的文本信息。

  • 新增行为:新增自定义限流后处理行为,创建完成后您可在关联行为选择框中下拉选择。更多详细信息,请参见配置Web行为