网络延迟导致的“不幂等”问题
场景描述:
一个用户对一个商品进行下单,出于各种原因,在较短时间内,用户多次点击了下单按钮,如果手机端没有预防该情况的发生,那么将会产生多个相同的请求(请求接口相同+请求参数相同),如果服务处理不当将有可能产生多个订单,致使脏数据生成,可能导致应用服务的其它功能异常(风险不可评估)。
场景分析:
一个合理的下单步骤包括三步骤:商品选择->提交购买(生成唯一订单流水编号)->确认购买
步骤二:
生成 一个随机唯一订单流水编号关联 用户信息+商品信息 ,该流水编号作为交易意向标识,用户可以继续交易或者放弃交易,且可用于追溯用户该笔交易的流水
步骤三:
用户提交交易意向标识,完成商品交易。
步骤二是必不可少的,仅有“用户信息+商品信息”不能作为唯一标识来确定用户该次交易操作(商品不应有唯一性)。
解决方案:
对于同一请求在极短时间内,多个相同请求到达的情况