针对zookeeper,比较常用的Java客户端有zkclient、curator。由于Curator对于zookeeper的抽象层次比较高,简化了zookeeper客户端的开发量。使得curator逐步被广泛应用。
1. 封装zookeeper client与zookeeper server之间的连接处理
2. 提供了一套fluent风格的操作api
3. 提供zookeeper各种应用场景(共享锁、leader选举)的抽象封装
依赖jar包
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.0</version>
</dependency>
建立连接
CuratorFramework curatorFramework = CuratorFrameworkFactory.builder().
connectString(CONNECTION_STR).sessionTimeoutMs(5000).retryPolicy(new ExponentialBackoffRetry(1000,3)).namespace(“curator”).build();
重试策略:Curator内部实现的几种重试策略:
. ExponentialBackoffRetry:重试指定的次数, 且每一次重试之间停顿的时间逐渐增加
. RetryNTimes:指定最大重试次数的重试策略
. RetryOneTime:仅重试一次
. RetryUntilElapsed:一直重试直到达到规定的时间
namespace: 值得注意的是session2会话含有隔离命名空间,即客户端对Zookeeper上数据节点的任何操作都是相对/curator目录进行的,这有利于实现不同的Zookeeper的业务之间的隔离