AHAS的Web场景防护功能面向提供Web服务的应用,针对访问请求中的一些参数项进行精细化的流量控制。对于使用了主流Web框架(Servlet容器、Spring Web、Spring Boot)的应用,AHAS实现了API粒度的请求参数解析,通过配置Web流控规则,可以对请求中IP、Host、Header、URL Param等参数维度的资源调用进行流量控制,保护业务与系统的稳定性。本文介绍如何为应用配置Web场景防护。
前提条件
- 将应用接入AHAS应用防护。具体操作,请参见接入应用方式。
- Web场景防护要求AHAS Sentinel Java SDK版本≥1.10.1或Java Agent版本≥1.10.4。
说明 Web场景防护暂不支持其他多语言SDK方式接入。
背景信息
在提供Web服务的场景下,除了API维度的限流降级防护,针对访问请求来源IP、访问请求Param参数等资源调用的限流防护是各种业务场景下能更好保证业务应用正常运行的手段。在一些大流量的Web业务场景下,可能不单是对当前接口进行限制,而需要针对当前访问频次最高的来源IP或访问频次最高的商品ID,有针对性地对其访问进行限制,比如:
- 对一段时间内最频繁购买的商品ID进行限制,以防击穿缓存而导致大量请求到数据库的情况。
- 对一段时间内频繁大量访问的来源IP进行限制,防止利用虚假信息恶意刷单。
操作步骤
Web防护规则常用场景
场景一:热点商品秒杀
在秒杀等抢购商品的场景下,由于流量较大,可能会导致系统响应不及时甚至崩溃。为保证系统稳定,可配置热点规则,超过一定阈值后,系统会让购买热点商品的流量排队等待。
例如购买同一商品,希望1秒内同个商品超过100次请求后,对多余的请求进行拒绝,可在新建Web防护规则对话框中配置以下规则信息,表示1秒内,针对热点商品ID进行下单的请求,每个单独商品ID每秒最多只能允许100个请求,其余超出的当前商品下单请求都会被拒绝,返回自定义的信息。

- 参数属性输入URL参数。
说明 在参数属性中,选择当前热点商品ID所对应的参数字段,例如,假设URL参数中存在一个stockId字段对应请求的商品ID,那么参数属性可以选择URL参数,并在参数名称中填写属性在请求中对应的字段名称。
- URL参数名称输入stockId。
- 阈值输入100个请求/每秒。
- 流控方式选择快速失败。

场景二:防止恶意刷单
例如在促销活动中,某些恶意刷单请求较多的时候,会占用较多商品库存或服务器资源。这种情况下可以针对其IP来源进行排队等待的处理,使访问请求匀速通过,防止过量的请求对服务稳定性产生影响。在新建Web防护规则对话框中配置以下规则信息,表示每个不同来源IP调用此接口的请求会以每10 ms一个的速度匀速通过(1s/100=10 ms),后续多余的请求要进行排队等待。排队中的请求如果等待时长超过30
ms就会立即失败。

参数 | 说明 |
---|---|
参数属性 | 选择Client IP。 |
阈值类型 | 默认选择请求数。 |
阈值 | 输入100个请求/每秒。 |
流控方式 | 选择匀速排队。 |
超时时间 | 输入30。 |
是否开启 | 选择开启。 |