一、限购
1、场景
如一商品在一次活动中,规定每人限购两份。
2、分析
商城系统用户一般都会进行实名认证,我们可以根据用户证件号进行限购处理,
或者是用户的唯一 ID 标识,或者用户注册使用的手机号等。
在用户支付出单前,根据限购标识去数据库中查询一下有效订单数量,
如大于活动限购次数,不允许支付出单。
3、实现
- 在调用支付接口前,调用限购接口,符合购买条件,继续支付;不符合条件,提示并改变订单状态为无效。
- 在订单状态修改前,调用限购接口,符合购买条件,成功生成订单号;不符合条件,提示并做退款处理,订单设置为无效。
二、限流
1、场景
场景一:不同接口不同时间段限流
场景二:针对不同产品或者不同套餐限流
2、分析
场景一:不同接口的不同时间段限流,
如支付接口在中午 12 点到 0 点订单量较大,接口的限流白天时段可以开放大些。
0 点以后可以少些,可以做到恶意防刷,当然你们系统肯定也有黑名单管控。
场景二:针对不同产品或者不同套餐限流
如针对产品进行不同限流,IPone 11 PRO Max 手机活动中每人限购 2 个,手机壳每人限购 5 个。我们产品维度根据用户唯一 ID 进行并发数限制。
3、实现
场景一:每个接口请求前,判断是否超出最大流量限制。
场景二:在调用下单接口前,判断用户 ID 是否超出该产品允许的最大并发数(此时一般为并发数)。
三、幂等
1、场景
每次请求流水号不同,相同流水号的请求,返回相同的响应信息。
2、分析
做请求幂等处理
幂等字段 默认流水号(可自定义用户 ID 或者证件号或 IP+ 手机码等)
报文类型 默认 JSON 字符串 (可以是 XML)
限购份数 默认为 1(每人每次允许发起的最大请求次数)
缓存时间 默认一小时 (根据幂等字段查询缓存数据,返回已有重复请求)可以是活动的最大时间
3、实现
基于自定义注解实现
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于