Zookeeper单机模式安装
java 环境
配置JAVA环境,检验环境 java -version
下载安装Zookeeper
下载地址:https://zookeeper.apache.org/releases.html
下载解压Zookeeper
cd /usr/local/
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
cd zookeeper-3.7.0/
重命名配置文件 zoo_sample.cfg
cp conf/zoo_sample.cfg conf/zoo.cfg
启动ZK
./bin/zkServer.sh start
连接ZK客户端
./bin/zkCli.sh
当我们看到下图的信息的时候,表示我们启动成功
Zookeeper命令
基本命令
create : 在树中的某个位置创建一个节点
delete : 删除一个节点存在:测试节点是否存在于某个位置
get data : 从节点读取数据
set data: 将数据写入节点
get children : 检索节点的子节点列表
sync : 等待数据被传播
操作Zookeeper
查看Zookeeper中包含的key
ls /
创建一个新的Znode
创建成功以后我们可以使用 ls /查看我们创建的内容
create /zkMxn muxiaonong
ls /
[zkMxn, zookeeper]
get命令获取创建Znode的内容
get /zkMxn
set 命令来对 zk 所关联的字符串进行设置
set /zkMxn mxn666
删除Znode
delete /zkMxn
Java Api操作 ZK
1. 导入Jar包
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.3</version> </dependency> <!--junit单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>runtime</scope> </dependency>
2. API操作Zookeeper
创建Zookeeper对象
public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) throws IOException { this(connectString, sessionTimeout, watcher, false); }
connectString: 连接的地址,包括主机名和端口号,多个的话用逗号隔开
sessionTimeout: 等待客户端通信的最长时间,客户端如果超过这个时间没有和服务端进行通信,那么就认为该客户端已经终止,一般设置值为 5-10秒,单位为毫秒
watcher: 监听器,用于接收会话事件的接口,需要自己定义,实现process()方法
连接Zookeeper
Zookeeper zkClient = ""; String connectStr = "192.168.2.1:2181"; zkClient = new ZooKeeper(connectStr, 5000, new Watcher() { @Override public void process(WatchedEvent watchedEvent) { } });
创建节点
public String create(String path, byte[] data, List<ACL> acl, CreateMode createMode) throws KeeperException, InterruptedException {}
path: 节点路径
data: 节点数据
acl: 节点权限,例如:ZooDefs.Ids.OPEN_ACL_UNSAFE
OPEN_ACL_UNSAFE:完全开发,采用world验证模式,由于每个ZK连接都有world验证模式,所以当我们节点设置了该参数时,对所有连接开放
CREATOR_ALL_ACL: 创建该Znode连接的拥有所有权限,这里采用的是auth验证模式,用sessionID做验证,如果设置了该参数,只有创建改Znode节点的连接才能对这个Znode进行任何操作
READ_ACL_UNSAFE:所有的客户端都可读,这里采用world验证模式,和第一条同理,所有连接都可以读取该znode
createMode: 节点类型,例如:CreateMode.PERSISTENT
PERSISTENT:持久节点
PERSISTENT_SEQUENTIAL:持久有序节点
EPHEMERAL:短暂节点
EPHEMERAL_SEQUENTIAL:短暂有序节点