服务幂等性设计
1.什么是幂等性
一次和多次请求某一个资源对于资源本身应该具有同样的副作用(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。
2.如何保证幂等性
幂等需要通过唯一的业务单号来保证。也就是说相同的业务单号,认为是同一笔业务。使用这个唯一的业务单号来确保,后面多次的相同的业务单号的处理逻辑和执行效果是一致的。
3.方案
- 防重表 使用订单号orderNo做为去重表的唯一索引,每次请求都根据订单号向去重表中插入一条数据。
- 乐观锁 UPDATE tab1 SET col1=1,version=version+1 WHERE version=#version#
- 分布式锁
- token令牌,redis