幂等性就是多次向同一个接口发送同一个请求时,必须保证操作只执行一次。
产生幂等性问题的场景:
1.前端重复提交;
前端多点了几次提交,后端创建重复的数据或者对同样的请求做处理。
2.接口超时重试;
调用远程接口时一般会对失败情况做重试机制,如果一次请求执行一半时发生网络问题,导致重试调用时因为之前的脏数据出现调用异常。
3.消息重复消费;
消息队列会因为网络请求出现重复消费的情况。
解决方案:
1.Token机制:个人觉得些许麻烦。
2.基于MySQL的唯一索引
3.基于分布式锁实现
利用redis做分布式锁,给当前请求加上唯一标识,
4.乐观锁(版本号),悲观锁