幂等性——网络抖动重复支付的解决方法“用户手抖,连续点击了两次‘支付’按钮,或者网络抖动导致前端重发了请求,你的后端接口怎么保证不扣用户两笔钱?” 先查后写?? 首先要明白网络请求到后端一定是高并发多线程的去处理请求的,所以两次的支付请求如果都是先查后改的话会出现下图这样的问题: 1、线程 A 进来,查订单 1001,发现是“未支付”。 2、线程 B 刚好也进来,查订单 1001,发现也是“未支付”。 3、线程 A 执行扣款,把状态改为“已支付”。 4、线程 B 继续执行扣款,再次扣钱,覆盖状态。 这样就会造成扣两次钱的P0级严重错误