幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变

幂等的实现方案

系统

状态机控制幂等(旧状态无法提交)

页面

通过 loading、跳页 控制无法重复点击

后台

token校验

token由前端生成,存redis,校验token存在即为处理过或处理中的请求 setnx

token校验,token由服务端生成,先申请,存redis,使用时删除成功为有效请求 del

参数校验

入参存redis,重点参数一致认定为相同请求(例如个人三要素验证)

在一定时间范围内,参数一致认定为想通请求(例如创建订单)

DB

select & delete 天然幂等

insert

先查询是否存在再插入

使用联合唯一索引

使用中间去重表

update

业务场景并发低,set a = 123 认定为幂等

业务场景并发低,使用version来控制幂等

业务场景高并发

对于自减 where count - 1 > 0

对于自增

通过后端代码去重

或拆表使 count = select count(0) from table_b

由高并发引发的联想

通过MQ进行削峰,引发重复消费问题

通过db或redis,存消息id解决重复消费问题

通过消息参数做业务去重(后台 参数校验)


老污的猫
30 声望5 粉丝

引用和评论

0 条评论