apache curator

“Guava is to java what Curator is to Zookeeper”.

Start

Curator之前介绍过一些,是一个使用流式API方式实现的Zookeeper的Java客户端。

Get a connection

connection的实例(CuratorFramework)是用工厂模式分配的(CuratorFrameworkFactory),对于一个zk集群,你只需要一个连接的实例。
同时你可能会用到的是RetryPolicy 去设置失败重试的参数,一般你会这样使用:

1
2
3
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3)
CuratorFramework client = CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy);
client.start();

客户端需要显式的start并且在不用的时候显式的close.

在链接成功以后就可以直接操作对应的集群。并且,如果在执行操作的过程中出现了连接错误,curator的manage会自动重新尝试操作。

分布式锁

不可以对某个路径下的节点进行上锁:

1
2
3
4
5
6
7
8
9
10
11
12
InterProcessMutex lock = new InterProcessMutex(client, lockPath);
if ( lock.acquire(maxWait, waitUnit) )
{
try
{
// do some work inside of the critical section here
}
finally
{
lock.release();
}
}

Talk is not cheap.