java curator Liunx zookeeper

1.Curator框架入门代码

这是构建curator的client连接zookeeper集群的构建

  1. //path地址
  2. String pathName = "/user/dir";
  3. RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
  4. CuratorFramework client = CuratorFrameworkFactory
  5. //指定zookeeper集群的host:<port>
  6. .newClient(
  7. "192.168.3.36:2181,192.168.3.37:2181,192.168.3.24:2181",
  8. retryPolicy);
  9. client.start();
  10. //判断pathName是否创建
  11. if (client.checkExists().forPath(pathName)!= null){
  12. System.out.println(String.format("------ THis is: %s",new String(client.getData().forPath(pathName))));
  13. }else {
  14. client.create()
  15. .creatingParentsIfNeeded()
  16. .forPath(pathName, "hello wallacefw".getBytes());
  17. System.out.println(new String(client.getData().forPath(pathName)));
  18. }

2.Curator关于重入锁分析及理解

关于重入锁的代码如下:

  1. //重入锁构建
  2. InterProcessMutex lock = new InterProcessMutex(client, "/locks/lock_01");
  3. //获取锁
  4. lock.acquire();
  5. Thread.sleep(1000);
  6. //释放锁
  7. lock.release();

3对2的步骤细节分析

在执行InterProcessMutex lock = new InterProcessMutex(client, "/locks/lock_01")代码时候,创建InterProcessMutex
zookeeper分布式锁对象

  1. private static final String LOCK_NAME = "lock-";
  2. //这里创建了 InterProcessMutex 对象,且对
  3. public InterProcessMutex(CuratorFramework client, String path){
  4. this(client, path, LOCK_NAME, 1, new StandardLockInternalsDriver());
  5. }
  6. InterProcessMutex(CuratorFramework client, String path, String lockName, int maxLeases, LockInternalsDriver driver)
  7. {
  8. basePath = path;
  9. internals = new LockInternals(client, driver, path, lockName, maxLeases);
  10. }
  • 这时候会对Zookeeper全局同步一个分布式锁的空间,命名为/locks/lock_01

截取资料