本文共 2908 字,大约阅读时间需要 9 分钟。
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目 Zookeeper=文件系统+通知机制
znode
节点类型
首先输入zkCli.sh
进入命令行模式
命令基本语法 | 命令功能描述 |
---|---|
help | 显示所有操作命令 |
ls path | 使用ls命令查看当前znode中所包含的内容 |
ls2 | 查看当前节点数据并能看到更新次数等数据 |
create | 创建节点,默认是持久化节点 create -s:创建带序列的节点 create -e:创建临时节点 |
get path | 获取节点的值 |
set | 设置节点的具体值 |
stat | 查看节点状态 |
delete | 删除节点,不可删除带有子节点的节点 |
rmr | 递归删除节点 |
quit | 退出zk客户端 |
org.apache.zookeeper zookeeper 3.4.6
package hadoop;import org.apache.zookeeper.*;import org.apache.zookeeper.data.Stat;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.util.List;/** * @author sunyong * @date 2020/07/06 * @description */public class ZKClientDemo { private static final String CONNECTSTRING = "hadoop110,hadoop111,hadoop112:2181";//zk的集群连接信息 private static final int SESSIONTIMEOUT = 2000;//集群超时时间 private static ZooKeeper zkClient;//zk对象 //初始化zk对象 @Before public void init() throws IOException { zkClient=new ZooKeeper(CONNECTSTRING,SESSIONTIMEOUT, new Watcher() { @Override public void process(WatchedEvent watchedEvent) { } }); } //创建节点 @Test public void CareateNode() throws KeeperException, InterruptedException { String path = zkClient.create("/kgc/hadoop110","hadoop110".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(path); } //获取所有子节点 @Test public void getChildrenNode() throws KeeperException, InterruptedException { Listchildren= zkClient.getChildren("/kgc",true); for (String child : children) { System.out.println(child); } } //判断节点是否存在 @Test public void existsNode() throws KeeperException, InterruptedException { Stat exists = zkClient.exists("/kgc/1",false); System.out.println(exists==null?"不存在":"存在"); }}
Leader(领导者)
Follower(跟随者)
Observer(观察者)
半数机制
leader选举触发时机
ZooKeeper集群中超过半数机器存活,就可提供服务
ZooKeeper是树形结构,每个节点都能存储数据
ZooKeeper中节点有Leader和Follower之分
转载地址:http://dcjxi.baihongyu.com/