一、本章概述
二、接口幂等性
2.1 定义
2.2 运用场景
2.3 保证幂等性的策略有哪些?
2.4 如何实现
2.5 如何操作
一、本章概述
- 什么是幂等性
- 幂等性设计的 核心思想
-
select、updates、delete、insert 和 混合操作 的接口幂等性
二、接口幂等性
-
提交订单按钮 如何防止重复提交?
-
表单录入页 如何防止重复提交?
-
微服务接口,客户端重试时,会对业务数据产生影响吗?
2.1 定义
-
幂等性: f(f(x)) = f(x)
- 幂等元素运行多次,还等于它原来的运算结果
- 在系统中,一个接口运行多次,与运行一次的效果是一致 的
2.2 运用场景
- 什么情况下需要幂等性
- 重复提交、接口重试、前端操作抖动 等
-
业务场景 : 用户多次点击提交订单,后台应只生成一个订单
-
业务场景 : 支付时,由于网络问题重发,应该只扣一次钱
并不是所有的接口都要求幂等性,要根据业务而定
2.3 保证幂等性的策略有哪些?
幂等性的核心思想:通过唯一的业务单号保证幂等
2.4 如何实现
-
非并发情况下,查询业务单号有没有操作过,没有则执行操作
-
并发的情况下,整个操作过程加锁 (分布式锁)
2.5 如何操作
CRUD |
描述 |
操作 |
Select |
不会对业务数据有影响,天然幂等 |
无 |
Delete |
第一次已经删除,第二次也不会有影响 |
无 |
Update |
更新操作传入数据版本号(唯一业务单号) |
通过乐观锁实现幂等性 |
Insert |
此时没有唯一业务单号
|
使用Token保证寡等 |
混合 |
找到操作的 唯一业务单号 |
有:则可使用分布式锁 没有:可以通过Token保证幂等 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)