redis分布式锁与zookeeper分布式锁的区别

redis分布式锁,其实需要不断去尝试获取锁,比较消耗性能

zk分布式锁,获取不到锁,注册个监听器即可,不需要不断主动尝试获取锁,性能开销较小

redis如果获取锁的那个客户端bug了或者挂了,那么只能等待超时时间之后才能释放锁

而zk,因为创建的是临时znode,只要客户端挂了,znode就没了,此时就自动释放锁

zk中,删除node即释放锁

 

zk创建分布式锁的关键点:

locked_path = ZKclient.instance.createEphemeralSeqNode(LOCK_PREFIX);
if (null == locked_path) {
        throw new Exception("zk error");
}

zk实现监听的关键点:
client.getData().usingWatcher(w).forPath(prior_path);

你可能感兴趣的:(redis分布式锁与zookeeper分布式锁的区别)