文章目录
- 背景
- 超卖问题复现
- 1.1 现象
- 错误案例一:数据库update相互覆盖
- 错误案例二:扣减串行执行,但是库存被扣减为负数
- 错误案例三:使用 synchronized 实现内存中串行校验,但是依旧扣减为负数
- 1.2 解决办法
- 单体应用解决超卖的问题
- 常见分布式锁的使用
- 3.1 数据库乐观锁
- 3.2 数据库分布式锁
-
- 3.3 Redis setNx
背景
在单体的应用开发场景中涉及并发同步时,大家往往采用Synchronized(同步)或同一个JVM内Lock机制来解决多线程间的同步问题。而在分布式集群工作的开发场景中,就需要一种更加高级的锁机制来处理跨机器的进程之间的数据同步问题,这种跨机器的锁就是分布式锁。接下来本文将为大家分享分布式锁的最佳实践。