旧文档,TODO重新总结
一段逻辑被执行一次和多次产生的对业务数据产生的影响是相同的,表示具有幂等性。如果返回值也是相同的则代表有可重入性
常见HTTP请求动词的:
GET,幂等 POST,非幂等 PUT,幂等 DELETE,幂等
select,幂等 insert,非幂等 update,幂等 delete,幂等
网络抖动、失败重试、用户重复操作等都会造成幂等性问题
点击按钮后,按钮置灰,等待请求结果返回再恢复
进入页面后向后台申请一个token,每个表单提交时都携带token
提交表单后跳转到新的页面
分为两种,可重入、对系统影响幂等
对于需要有幂等性要求的数据表,增加唯一索引
A向B调用申请token B生成token,放入redis,返回token A调用B携带token执行业务操作 B在redis中删除token 返回1删除成功,代表token存在,表示第一次操作 返回0删除失败,代表token不存在,表示重复操作 再执行业务操作
根据订单的状态进行保证,实际上是利用单向改变的特性 最后更新db时,利用 where 订单id + 状态 来保证
更新单个表时,可以从接口的入口处同时携带version字段 进行乐观锁更新
业务操作前先往防重表(有唯一索引)加入数据