一、分布式锁的使用场景
不同进程间共享同一个变量,为保证共享变量的正确性,需要使用分布式锁。
分布式系统需要满足:数据一致性,可用性、分区容错性。
实际使用中,任何一个分布式系统都无法同时满足一致性、可用性和分区容错性,最多只能同时满足其中两项。通常,绝大场景中我们都会牺牲强一致性来换取系统的高可用性。只要可以保证最终的一致性,用户还是可以接受的。
二、分布式锁需要具备哪些条件
- 在分布式系统环境下,一个方法在同一时间只能被一台机器的一个线程执行;
- 需要具备可重入特性;
- 具备锁失效机制;
- 防止死锁;
三、三种实现方式
- 基于数据库实现分布式锁
- 基于缓存(Redis等)实现分布式锁
- 基于Zookeeper实现分布式锁