接口幂等性设计

接口幂等性确保操作多次执行与执行一次效果相同,适用于重复提交、重试等情况。文章介绍了Delete、Update、Insert操作的幂等性实现,包括唯一业务号、乐观锁、Token机制,并详细阐述了Token的生成、验证和有效期管理,以防止并发问题和不必要的数据影响。
摘要由CSDN通过智能技术生成

接口幂等性

在系统中,一个接口运行多次,与运行一次的效果是一致的

什么情况下需要幂等性

  • 重复提交、接口重试、前端操作抖动等
  • 业务场景:用户多次点击提交订单,后台应只生成一个订单
  • 业务场景:支付时,由于网络问题重发,应该只扣一次钱
  • 并不是所有的接口都要求幂等性,要根据业务而定

幂等性的核心思想:通过唯一的业务单号保证幂等

  • 非并发情况下,查询业务单号有没有操作过,没有则执行操作
  • 并发的情况下,整个操作过程加锁
  • Select操作:不会对业务数据有影响,天然幂等
  • Delete操作:第一次已经删除,第二次也不会有影响
  • Update操作:更新操作传入数据版本号,通过乐观锁实现幂等性(先查再更新)

update自身带锁。直接update不会出现并发修改问题。乐观锁是先查询在修改
Update 商品表 set 库存 = 库存 - 购买量 ,version = 查询version值+1 where version = #{查询的version值} and 商品ID= #{商品ID}

  • Insert操作:此时没有唯一业务单号,使用Token保证幂等
  • 混合操作:找到操作的唯一业务单号,有则可使用分布式锁,没有可以通过Token保证幂等

Delete操作的幂等性

根据唯一业务号去删除
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原飞木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值