zookeeper 分布式锁
zookeeper 分布式锁 分布式锁的概念,大家应该都已经理解,在此不会细讲。 分布式锁简单来说就是服务器集群环境下出现用户高并发访问同一个资源时,对该资源访问进行加锁等待,以保证资源的准确性。 zookeeper的分布式锁是并发的多线程通过循环的请求创建zk节点来竞争锁的占有权,待取得占有权后,其他线程进入等待。待释放占有权后,其他线程再进行循环竞争。 本编文章,主要讲解zk分布式锁,如何使用,具体逻辑还需根据实际场景进行调整。 代码是在本地建设,为了方便测试,所以里面都是静态方法。真正的开发环境都是基于webservlet或微服务工程,使用bean的方式进行类对象或者方法的调用。大家可以根据自己的工程业务做zk分布式锁的封装。 重点提醒下: 如果使用zk的watcher监听通知,节点创建后并瞬间删除,zkServer将会监听失败。因为zkServer的监听有延迟,当执行监听的时候,他发现并无该节点的stat信息,故不执行监听。 1.客户端创建 zk是支持集群的,所以这里两种客户端形式,代码操作是一样的,唯有连接地址略有差异。 package com.qy.zk.lock; import org.apache.curator.RetryPolicy; import org.apache.curator.framework.CuratorFramework; import