项目实战:并发下保证接口的幂等性

本文探讨了幂等性的概念,指出其在多次请求时应保持相同结果。防重设计和幂等设计的区别在于后者要求每次请求返回相同结果。常见场景包括表单重复提交、浏览器回退和接口重试等。从数据库角度看,SELECT天然幂等,INSERT和DELETE通常幂等,UPDATE则需要额外措施。保障幂等性的方法包括使用唯一性索引、防重表、status机制、悲观锁、乐观锁、token机制和分布式锁。幂等性是系统服务对外的约定,确保在网络异常等情况下的重试不会影响系统状态。
摘要由CSDN通过智能技术生成

1.1 幂等性的概念

Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.

  • 多次请求一个资源时,应该有相同的结果(网络超时等问题除外)。 也就是说,一次请求被多次重复执行对资源自身的影响与第一次执行的影响相同。
  • 例如:用户查询结果多次扣款。 流水记录变成两个就是没有保证接口的幂等性。

1.2 防重设计和幂等设计

  • 防重设计和幂等设计在很多情况下是可以通用的,解决方案也比较类似,区别在于:
    • 防重设计:避免产生重复数据,对返回结果没有限制。
    • 幂等设计:避免产生重复数据,要求每次请求都返回同样的结果。

1.3 常见场景

  • FORM 表单,按钮重复点击,产生 ID 不一样的两条重复数据。
  • 浏览器页面返回
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值