目的

  • 避免信息的重复消费

方案

唯一id+指纹码

注意

  • 需要和消费后的业务落库于相同事务中

**

操作

  1. 利用主键去重
  2. sql 查询 ```sql select count(1) from t_order where id = 唯一id+指纹码

select 1 from t_order where id = 唯一id+指纹码 limit 1 ```

优点

  1. 实现简单

    缺点

  2. 高并发不够

    解决方案

  3. id 的分库分表进行路由

redis 原子性进行幂等

注意

  • 和消费后的业务落库并不在同一个事务中

操作

  1. setnx
  2. 如果需要,进行 setex

问题

  1. 消费后的业务如果需要落库,那么如何于 redis 的幂等设计方案如何保证一致性
    1. 如果幂等设计方案是db,可以用事务进行保证
  2. 消费后的业务如果不需要落库,如何设置定时同步策略