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

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 常见场景

1.4 汇总分析(数据库的角度

1.5 保障幂等方式

1.5.1 唯一性索引

alter table xxx add UNIQUE KEY (key);

1.5.2 单独表:防重复

1.5.3 status 机制

update table set status = 1 where id = 1 and status=2;

1.5.4 数据库悲观锁

select * from table id = 1;
select * from table id = 1 for update;

1.5.5 数据库乐观锁(version )

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

select id,version,amount from table id = 1;
-- version 查询结果为 0
update table set amount = amount + 1,version = version + 1 
where id=1 and version = 0;

1.5.6 token机制

  1. 生成全局唯一的 token,token 放到 redis 中(注意设置过期时间),页面跳转时获取 token 。
  2. 请求时携带token ,执行提交逻辑。
    项目实战:并发下保证接口的幂等性

1.5.7 分布式锁

1.6 小结

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