1,应用场景
抢购、秒杀、批量交易处理、交易处理
2,并发防资损checklist
状态控制失效:1.更新记录带原状态更新;2.状态更新后判断影响行数等于1
限制数值失效:金额、库存、限购次数
并发导致业务唯一约束失效
多级缓存导致数据脏读:读取、更新
【1】状态控制失效
1.1 说明
以退款交易为例,正常退款状态流转为“新建>>退款中>>退款成功”。
并发情况下,请求A和B同时对一条成功交易X进行退款,A和B都退款成功,产生资损
1.2 资损原因
请求A和B并发请求时,均对成功交易请求退款,请求退款操作时,状态从“新建>>退款中”时,做如下操作:
a,更新记录带原状态更新
b,状态更新后判断影响行数等于1
若上面两步处理不到位,即A和B都会退款成功,导致资损
1.3 测试方法
Jmeter多线程请求同一笔成功交易退款,只有一条退款成功记录。
要求研发对库存操作时,更新状态时要带原状态更新