业务场景:扣款业务。

解决方案

悲观锁方案:

  • 分布式锁互斥
  • 缺点:引入额外组件(redis/zk),降低吞吐量、

对于小概率不一致,乐观锁方案:

  • 在set写回的时候,加上初始状态的条件compare,只有初始状态不变时,才允许set写回成功,Compare And Set(CAS),是一种常见的降低读写锁冲突,保证数据一致性的方法

总结

高并发“查询并修改”的场景,可以用CAS(Compare and Set)的方式解决数据一致性问题。对应到业务,即在set的时候,加上初始条件的比对即可。