如果用户向后端服务提交多次相同订单的提交服务,那么后端应该只生成一条订单记录。
有一些操作天然是幂等的,如查询操作和删除操作等。
幂等性实现
1.token机制(仅这个方法适用于订单的重复提交)
后端先生成1个令牌将其记录在Redis中并将这令牌返回给前端,前端在提交订单信息的时候会在请求头中加入令牌信息,后端会检验令牌信息,校验成功后先删除该令牌后将订单记录插入数据库中,因此后续重复的提交操作会因Redis无该令牌消息从而校验失败。此过程中校验令牌、删除令牌这两步组合成的事务要保证原子性。
2.数据库的锁机制(使用乐观锁机制)
乐观锁机制:适合在更新场景使用,不适用于防止重复提交订单场景。