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