业务场景:扣款业务。
解决方案
悲观锁方案:
- 分布式锁互斥
- 缺点:引入额外组件(redis/zk),降低吞吐量、
对于小概率不一致,乐观锁方案:
- 在set写回的时候,加上初始状态的条件compare,只有初始状态不变时,才允许set写回成功,Compare And Set(CAS),是一种常见的降低读写锁冲突,保证数据一致性的方法
总结
高并发“查询并修改”的场景,可以用CAS(Compare and Set)的方式解决数据一致性问题。对应到业务,即在set的时候,加上初始条件的比对即可。