一、新建maven项目
设置---》选择本地的maven
2、
选好文档地址-------idea文档
引入zookeeper
<dependencies>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.12</version>
</dependency>
</dependencies>
会出现报错的情况:刷新一下就好了
出现这些,说明已经安装成功了
2、连接zookeeper
进行增删改查操作:
先创建一个Java类
先启动一下zookeeper:客户端启动
启动成功
连接zookeeper
import org.apache.zookeeper.ZooKeeper;
import java.io.IOException;
public class ZkTest {
//zk连接地址
public static final String zkconnect="101.43.142.241:2181";
//地址为服务器本地的地址,端口号是2181是zookeeper的端口号,要确保服务器已经启动了
//超出时间限制,单位是ms
public static final int timeout=15000;
//主函数测试
public static void main(String[] args) throws IOException {
ZooKeeper zooKeeper=connect();
}
//测试连接
public static ZooKeeper connect() throws IOException {
ZooKeeper zk=new ZooKeeper(zkconnect,timeout,null);
System.out.println("连接成功");
return zk;
}
}
创建节点
//增加
public static void create(ZooKeeper zooKeeper,String node,String data) throws InterruptedException, KeeperException {
System.out.println("开始创建节点:"+node+"数据为:"+data);
List<ACL> acl= ZooDefs.Ids.OPEN_ACL_UNSAFE;
CreateMode createMode =CreateMode.PERSISTENT;
zooKeeper.create(node,data.getBytes(),acl,createMode);
System.out.println("zk节点创建成功!!");
}
删除节点
//删除
public static void delete(ZooKeeper zooKeeper,String node,String data) throws InterruptedException, KeeperException {
//先查下节点存不存在
Stat stat =zooKeeper.exists(node,false);
System.out.println("开始删除节点:"+node+"原来版本号是:"+stat.getVersion());
zooKeeper.delete(node,stat.getVersion());
System.out.println("zk节点删除成功!!");
}
修改节点
//修改
public static void setdata(ZooKeeper zooKeeper,String node,String data) throws InterruptedException, KeeperException {
Stat stat =zooKeeper.exists(node,false);
System.out.println("开始修改节点:"+node+"原来版本号是:"+stat.getVersion());
//stat.getVersion 获取版本号
//data.getBytes() 转换
zooKeeper.setData(node,data.getBytes(),stat.getVersion());
System.out.println("节点修改成功!!");
}
查询数据
//查询
public static void query (ZooKeeper zooKeeper,String node) throws InterruptedException, KeeperException {
String result=new String( zooKeeper.getData(node,false,null));
System.out.println("准备查询数据:"+node+"-------节点数据是:"+result);
}