一、zookeeper的安装
1.下载linux环境zookeeper安装包(以3.6.3版本为例)
下载地址: zookeeper3.6.3
2.上传到服务器再解压:
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
3.修改安装目录名:
mv apache-zookeeper-3.6.3-bin zookeeper-3.6.3
4.修改配置文件名称:
mv ./conf/zoo_sample.cfg zoo.cfg
注意这里可以修改配置文件相关参数的:
5.在bin目录下启动zookeeper服务端:
./zkServer.sh start
如下图即为启动成功:
二、zookeeper的客户端和服务端的使用
操作zookeeper server端有两种方式,通过客户端连接或者java api代码实现连接:
1.服务端常用命令:
./zkServer.sh start //启动zk
./zkServer.sh status //zk状态
./zkServer.sh stop //关闭zk
./zkServer.sh restart //重启zk
2.客户端命令:
./zkcli.sh //不写默认连接本机
./zkcli.sh -server 127.0.0.1:2181 // 写ip端口可以连接其他机器的zk服务端
quit: //退出客户端连接
ls / //查看节点列表
ls /app1 //查询app1节点下的所有子节点
create /app1 //创建节点
get /app1 //获取节点数据
set /app1 123 // 设置节点数据
delete /app1 //删除节点
deleteall /app1 //删除节点app1及以下的所有子节点
create -e //创建临时节点
create -s //创建顺序节点,自增的
ls -s /app1 //查看节点信息明细
二、javaAPI Curator 实现连接zookeeper服务端
curator是zookeeper的java客户端工具。官网: http://curator.apache.org
1.首先添加依赖:
<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>
2.建立连接:
public class CuratorDemo {
/**
* 测试curator连接zookeeper
*
* @param connectString:服务端ip地址
* @param sessionTimeOUtMs:会话超时时间
* @param connectionTimeOutMs:连接超时时间
* @param retryPolicy:重试策略
*/
public static void testConnect1() {
// 重置策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 10);
//第一种方式
CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.1.201:2181", 60 * 1000, 15 * 1000, retryPolicy);
// 开启连接
client.start();
System.out.println("连接成功" + client);
}
/**
* 测试curator连接zookeeper
*
* @param connectString:服务端ip地址
* @param sessionTimeOUtMs:会话超时时间
* @param connectionTimeOutMs:连接超时时间
* @param retryPolicy:重试策略
*/
public static void testConnect2() {
// 重置策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 10);
//第二种方式,链式编写
CuratorFramework client = CuratorFrameworkFactory.builder()
.connectString("192.168.1.201:2181")
.sessionTimeoutMs(60 * 1000)
.connectionTimeoutMs(15 * 1000)
.retryPolicy(retryPolicy).build();
// 开启连接
client.start();
System.out.println("连接成功" + client);
}
public static void main(String[] args) {
testConnect2();
}
}