1、zookeeper非公平锁、公平锁、共享锁
在并发问题比较严重的情况下,性能会下降的比较厉害,主要原因是所有的连接都在对同一个节点进行监听,当服务器检测到删除事件时,要通知所有的连接,所有的连接同时接收到事件再次并发竞争,这就是羊群效应,这种枷锁方式是非公平锁的具体实现。
如上借助于临时顺序节点,可以避免同时多个节点的并发竞争锁,缓解了服务端压力,这种实现方式所有枷锁请求都进行排队加锁,是公平锁的具体实现
2、leader选举在分布式场景中的应用
curator leader选举,使用的就是公平锁。
幽灵节点:创建临时顺序节点,会在节点上加上uuid,在重试情况下,会去判断uuid是否存在,如果存在,即认为这个uuid是自己创建的。
3、分布式注册中心
spring cloud zookeeper注册中心实战
疑问:redis锁和zookeeper锁有什么区别?具体选哪个呢?
可靠性:zookeeper的比redis更强一点。因为redis是master slave结构,如果分布式锁,写完master后,还没及时同步到slave时,这次分布式锁是无效的。但zookeeper是leader follower过半才能写成功。
可靠性:redis性能好一点,zookeeper性能差一些。zookeeper锁写的效率比较差,redis的写的效率比较高。
具体选择哪个,要看体量