ZooKeeper和Redis两种分布式锁区别
Redis:
优点:redis基于内存,读写性能很高,因此基于redis的分布式锁效率比较高
缺点:在redis master实例宕机的时候,可能导致多个客户端同时完成加锁。
redis一旦发生redis master宕机,主备切换,redis slave变为了redis master。接着就会导致,客户端2来尝试加锁的时候,在新的redis master上完成了加锁,而客户端1也以为自己成功加了锁。
此时就会导致多个客户端对一个分布式锁完成了加锁。这时系统在业务语义上一定会出现问题,导致各种脏数据的产生。
Zookeeper:
- 优点:不存在redis的数据同步(zookeeper是同步完以后才返回)、主从切换(zookeeper主从切换的过程中服务是不可用的)的问题,可靠性很高
- 缺点:保证了可靠性的同时牺牲了一部分效率(但是依然很高)。性能不如redis。