1.使用场景
需要保证一个方法在同一时间内只能被同一个线程执行
2.实现方式:加锁和解锁
3.方案,考虑因素(性能,稳定,实现难度,死锁)
基于数据库做分布式锁--乐观锁(基于版本号)和悲观锁(基于排它锁)
基于 redis 做分布式锁:setnx(key,当前时间+过期时间)和Redlock机制
基于 zookeeper 做分布式锁:临时有序节点来实现的分布式锁,Curator
基于 Consul 做分布式锁