分布式锁ZK and Redis

对于ZK而言,主要依赖于ZK的临时顺序节点以及节点的监听机制去实现分布式锁,下面以锁的lock()方法进行一个具体的叙述。

1.tryLock()尝试获取锁

        a.根据锁定的key创建持久化节点

        b.在持久化节点的下面,创建临时顺序节点

        c.判断创建的节点是否为顺序节点中最小的节点,如果是,则锁定成功,如果不是,则锁定失败

2.如果获取锁失败,监听创建节点的上一个节点的删除状态,如果节点被删除,则判断当前节点是否为最小节点,如果是最小节点,则返回锁定成功,否则抛出异常

3.如果获取锁成功,直接返回。

其实这里主要想记录的一个东西是ZK和Redis的优缺点比较。

主要从两点去考虑吧,第一点高性能,ZK因为需要保证强一致性,所以牺牲了性能,但是对于Redis而言,本身就具有较高的性能。第二点是可用性,ZK从CAP的角度去说的话,是保证了强一致性,没有保证可用性的,但是从分布式锁的角度考虑,并不会存在锁丢失的问题,而Redis主节点宕机的情况下,可能会导致锁丢失。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值