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进行限制,防止利用虚假信息恶意刷单。
功能入口
登录MSE治理中心控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择治理中心 > 应用治理。
在应用列表页面,单击目标应用的资源卡片。
进入应用之后,在左侧导航栏,单击接口详情。单击热点参数防护(HTTP 请求)页签,然后单击新增热点参数防护(HTTP 请求)。
在新增热点参数防护(HTTP 请求)对话框,配置规则信息,完成配置后单击新增。
参数说明,请参见配置项说明。
在规则列表选择对应的规则,并在状态栏下单击开启。
在温馨提示对话框,单击确认,开启已配置的防护规则。
示例场景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的参数属性进行流量控制:
| |
(可选)匹配模式和匹配串 | 若选择参数属性为Header或URL参数,可打开属性值匹配开关,并设置匹配模式和匹配串。 匹配模式:
| |
阈值类型 | 默认为请求数。 | |
阈值 | 触发对流控接口的统计维度对象的QPS阈值。设置时,需选择统计时间间隔,支持秒、分钟、小时和天四种维度。 例如,若阈值填写为10,统计间隔选择分,则表示每分钟对应的请求数目不超过10个。 | |
高级选项 | 流控方式 |
|
Burst size | 当流控方式选择为快速失败时,可以额外设置一个Burst Size,即针对突发请求额外允许的请求数目。 | |
超时时间 | 当流控方式选择为排队等待时,需设置具体的超时时间,单位为ms。例如,QPS配置为5,则代表请求每200 ms才能通过一个,多出的请求将排队等待通过。超时时间代表最大排队时间,超出最大排队时间的请求将会直接被拒绝。 | |
是否开启 |
| |
配置防护行为 | ||
关联行为 |
|