谷粒商城——通过接口幂等性防止重复提交订单

如果用户向后端服务提交多次相同订单的提交服务,那么后端应该只生成一条订单记录。

有一些操作天然是幂等的,如查询操作和删除操作等。

幂等性实现

1.token机制(仅这个方法适用于订单的重复提交)

后端先生成1个令牌将其记录在Redis中并将这令牌返回给前端,前端在提交订单信息的时候会在请求头中加入令牌信息,后端会检验令牌信息,校验成功后先删除该令牌后将订单记录插入数据库中,因此后续重复的提交操作会因Redis无该令牌消息从而校验失败。此过程中校验令牌、删除令牌这两步组合成的事务要保证原子性。

2.数据库的锁机制(使用乐观锁机制)

乐观锁机制:适合在更新场景使用,不适用于防止重复提交订单场景。

3. 分布式锁
相关推荐
fat house cat_32 分钟前
【Spring底层分析】Spring AOP补充以及@Transactional注解的底层原理分析
java·后端·spring
拾忆,想起1 小时前
Redis红锁(RedLock)解密:分布式锁的高可用终极方案
java·数据库·redis·分布式·缓存·性能优化·wpf
衍生星球1 小时前
JSP程序设计之JSP指令
java·开发语言·jsp
007php0071 小时前
Go Vendor 和 Go Modules:管理和扩展依赖的最佳实践
java·开发语言·docker·微服务·golang·自动化·jenkins
狂奔solar1 小时前
使用Rag 命中用户feedback提升triage agent 准确率
java·前端·prompt
qianmoq2 小时前
第07章:flatMap():处理嵌套数据的利器
java
AAA修煤气灶刘哥2 小时前
后端人必懂的 “中间商” 哲学:代理模式 + 类加载器,从入门到唠明白
java·后端·面试
YANGZHAO2 小时前
JavaCore:ArrayList源码解析与性能优化
java·后端
程序员水自流2 小时前
Java设计模式是什么?核心设计原则有哪些?
java·设计模式
用户3721574261352 小时前
使用 Java 替换和修改 PDF 文本的方法
java