说明 / 示例
# 一、幂等性
## 1.1 定义
幂等是数据中得一个概念,表示N次变换和1次变换的结果相同。
高并发的系统如何保证幂等性
# 二、天然幂等方案
## 2.2 针对不同的http请求
### 2.21 Query
查询的API,可以说是天然的幂等性,因为你查询一次和查询两次,对于系统来讲,没有任何数据的变更,所以,查询一次和查询多次一样的。
## 2.3 针对Db
### 2.31 乐观锁
多版本并发控制,update with condition,更新带条件,这也是在系统设计的时候,合理的选择乐观锁,通过version或者其他条件,来做乐观锁,这样保证更新及时在并发的情况下,也不会有太大的问题。 例如update table_xxx set name=#name#,version=version+1 where version=#version# ,或者是 update table_xxx set quality=quality-#subQuality# where quality-#subQuality# >= 0 。
### 2.32 去重表
在插入数据的时候,插入去重表,利用数据库的唯一索引特性,保证唯一的逻辑。
### 2.33 悲观锁
select for update,整个执行过程中锁定该订单对应的记录。注意:这种在DB读大于写的情况下尽量少用。
### 2.34 不稳定的并发处理(过频繁的可能发生同时插入数据)
select + insert
并发不高的后台系统,或者一些任务JOB,为了支持幂等,支持重复执行,简单的处理方法是,先查询下一些关键数据,判断是否已经执行过,在进行业务处理,就可以了。注意:核心高并发流程不要用这种方法。
# 三、 特殊处理幂等方案
## 3.1 状态机幂等
# 四、页面幂等处理
## 4.1