Zookeeper--(七)Apache Curator客户端使用详解

Apache Curator客户端的使用

常用zk的一些java客户端对比

  • zk原生api
    • 超时重连,不支持自动,需要手动操作
    • Watch注册一次后会失效
    • 不支持递归创建节点
  • zkclient(更新缓慢)
  • Apache curator
    • Apache的开源项目
    • 解决watcher的注册一次就失效
    • Api更加简单易用
    • 提供更多解决方案并且实现简单:如分布式锁
    • 提供常用的ZooKeeper工具类

客户端 curator 的基本Api

1. Maven中引入相关依赖

		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>4.0.0</version>
		</dependency>

		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>4.0.0</version>
		</dependency>
		
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.11</version>
		</dependency>

2.创建会话

2.1 使用静态工厂方法创建客户端
RetryPolicy retryPolicy = new RetryNTimes(3,5000);
CuratorFramework client = 
CuratorFrameworkFactory.newClient(
                        zkServerPath
                        ,5000
                        ,10000
                        ,retryPolicy);

-参数:

参数名 含义
connectionString 服务器列表,格式host1:port1,host2:port2,…
retryPolicy 重试策略,内建有四种重试策略,也可以自行实现RetryPolicy接口
sessionTimeoutMs 会话超时时间,单位毫秒,默认60000ms
connectionTimeoutMs 连接创建超时时间,单位毫秒,默认60000ms
namespace 命名空间
2.2 使用Fluent风格创建会话
RetryPolicy retryPolicy = new RetryNTimes(3,5000);
CuratorFramework client = CuratorFrameworkFactory.builder()
                                .connectString(zkServerPath)
                                .sessionTimeoutMs(10000)
                                .connectionTimeoutMs(50000)
                                .retryPolicy(retryPolicy)
                                .build();
2.3 使用命名空间namespace创建会话

当客户端指定了独立命名空间为“/base”,那么该客户端对Zookeeper上的数据节点的操作都是基于该目录进行的。

通过设置Chroot可以将客户端应用与Zookeeper服务端的一课子树相对应,在多个应用共用一个Zookeeper集群的场景下,这对于实现不同应用之间的相互隔离十分有意义。

RetryPolicy retryPolicy = new RetryNTimes(3,5000);
CuratorFramework client = CuratorFrameworkFactory.builder()
                            .connectString(zkServerPath)
                            .sessionTimeoutMs(10000)
                            .connectionTimeoutMs(50000)
                            .retryPolicy(retryPolicy)
                            .namespace("workspace")
                      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值