docker+zookeeper3.8.0详细部署+部分代码
官网 查看最新版本:
https://zookeeper.apache.org/releases.html

docker search zookeeper

docker pull zookeeper:3.8.0

mkdir -p /docker/zookeeper3.8.0/data
docker run -d -p 12181:2181 \
-v /docker/zookeeper3.8.0/data:/data/ \
--name zookeeper3.8.0 --privileged 3bfde2963555

docker exec -it b080edec92e6 /bin/bash


客户端:
下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip




<!-- 原生zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.8.0</version>
</dependency>
<!--Apache Curator-->
<!-- <dependency>-->
<!-- <groupId>org.apache.curator</groupId>-->
<!-- <artifactId>curator-framework</artifactId>-->
<!-- <version>2.9.0</version>-->
<!-- </dependency>-->
<!-- zkclient -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.9</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- zookeeper 分布式锁、注意zookeeper版本 这里对应的是3.4.6-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.21</version>
</dependency>
package com.jyc;
import java.util.List;
import java.util.Objects;
import cn.hutool.core.util.StrUtil;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.api.CuratorWatcher;
import org.apache.curator.retry.RetryNTimes;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.data.Stat;
public class ZookeeperTest {
public static void main(String[] args) throws Exception{
//建立通信通道
CuratorFramework client = CuratorFrameworkFactory.newClient("49.235.127.115:2181",
new RetryNTimes(10, 5000));
client.start();// 建立连接
// 获取子节点,顺便监控子节点
/* List<String> children = client.getChildren().usingWatcher(new CuratorWatcher() {
public void process(WatchedEvent event) throws Exception
{
System.out.println("监控: " + event);
}
}).forPath("/");
System.out.println("children = "+children);*/
// 创建节点
// String result = client.create().withMode(CreateMode.PERSISTENT).withACL(ZooDefs.Ids.OPEN_ACL_UNSAFE).forPath("/test", "Data".getBytes());
// String result = client.create().withMode(CreateMode.PERSISTENT).withACL(ZooDefs.Ids.OPEN_ACL_UNSAFE).forPath("/test2", "Data".getBytes());
//
// System.out.println("result = "+result);
// 设置节点数据 重复设置相当于更新(数据覆盖)
// client.setData().forPath("/test", "a".getBytes());
// client.setData().forPath("/test2", "b".getBytes());
Stat stat = client.checkExists().forPath("/test");
//判断节点是否存在 存在就删除 不存在就建立
if(Objects.isNull(stat)){
client.create().withMode(CreateMode.PERSISTENT).withACL(ZooDefs.Ids.OPEN_ACL_UNSAFE).forPath("/test", "Data".getBytes());
}else {
client.delete().withVersion(-1).forPath("/test");
}
client.close();
System.out.println("end!");
}
}

浙公网安备 33010602011771号