版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/uk8692/article/details/88747342
Curator是Netflix公司开源的一套ZooKeeper客户端框架,作者是Jordan Zimmerman。和ZkClient一样,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等,目前已经成为了Apache的顶级项目。Patrick Hunt(ZooKeeper代码的核心提交者)以一句“Guava is to Java what Curator is to ZooKeeper”对其进行了高度评价。
除此之外,Curator中还提供了ZooKeeper各种应用场景(Recipe,如共享锁服务、Master选举几种和分布式计数器等)的抽象封装。
首先看一下Curator的Maven依赖:
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.5.0</version>
</dependency>
这里我们加入依赖curator-recipes,因为它也包含了curator-framework:
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.5.0</version>
</dependency>
创建会话
1.使用CuratorFrameworkFactory这个工厂类的两个静态方法来创建一个客户端:
public static CuratorFramework newClient(String connectString, RetryPolicy retryPolicy)
public static CuratorFramework newClient(String connectString, int sessionTimeoutMs, int connectionTimeoutMs, RetryPolicy retryPolicy)
也可以自己调用Fluent风格的API来创建:
CuratorFramework client = CuratorFrameworkFactory.builder()
.connectString("127.0.0.1:2181")
.retryPolicy(new ExponentialBackoffRetry(1000, 3))
.build();
效果是一样的,因为第一种方式的内部也是调用了第二种的方法。
2.通过CuratorFramework中的start()方法来启动会话。