1、什么是Zookeeper
(1)Zookeeper是一个分布式的开源的应用程序协调的服务,是Google的Chubby一个开源的实现,
它是集群的管理者,监视着集群中的各个节点的状态根据节点的反馈进行下一步合理的操作。
最终,将简单易用的接口和性能高效的功能稳定的系统提供给客户;
(2)Zookeeper 提供了
(2.1)文件系统
(2.2) 通知机制
2、zookeeper 配置
(1)下载 Zookeeper http://zookeeper.apache.org/releases.html
(2) 解压 进入 bin/ 目录 点击 zkServer.cmd 文件启动服务;
注意点:如果 命令行 一闪而过的因为他默认读取文件zoo.cfg ,
所以在conf 目录复制 zoosample.cfg 文件重命令为 zoo.cfg,
再次进入目录 bin,点击zkServer.cfg 启动服务,
zookeeper 默认端口:2181
3、zookeeper 常用命令
显示根目录下文件
ls / //查看当前节点数据
ls2 / //查看当前节点数据并能看到更新次数等数据
创建文件, 并设置初始内容:
create /config "test" //创建一个新的节点并设置关联值
create /config “” //创建一个新的空节点
获取文件内容
get /brokers //获取节点内容
修改文件内容
set /zk "zkbak" //对 zk 所关联的字符串进行设置
删除文件
delete /brokers //删除节点
rmr /brokers //删除节点及子节点
4、java 操作 zookeeper
//ZK 连接地址
private static final String CONNECTSTRING="127.0.0.1:2181";
//ZK 会话超时 时间
private static final int SESSION_OUTTIME=2000;
// 并发包 使用 CountDownLatch 阻塞用户,用户必须等待连接,发送成功的信号。
private static final CountDownLatch countDownLatch=new CountDownLatch(1);
public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
ZooKeeper zooKeeper=new ZooKeeper(CONNECTSTRING, SESSION_OUTTIME, new Watcher() {
//1. 事件通知
public void process(WatchedEvent event) {
//1.获取事件状态
KeeperState keeperState=event.getState();
//2.获取连接状态
if(KeeperState.SyncConnected == keeperState ) {
//3. 获取到事件的类型
EventType eventType=event.getType();
if(eventType == eventType.None) {
countDownLatch.countDown();
System.out.println("##########zk开始启动连接 ##########");
}
}
}
});
//阻塞
countDownLatch.await();
//创建持久类型 ,节点开发权限
//String reuslt=zooKeeper.create("/java_zk/zkzk01", "zhangsan".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//创建临时节点,连接关闭后节点会消失
String reuslt=zooKeeper.create("/java_zk/zkzk01", "temp".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
System.out.println("##### 新增节点信息:" + reuslt);
zooKeeper.close();
}