import java.util.List;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs.Ids;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class MyTest {
@Autowired
ZKManager zKManager;
@Test
public void test() {
try {
String path = "/famliy";
byte[] data = "Famliy.Lee".getBytes();
//zKManager.zk.create(path, data, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zKManager.zk.create(path+"/thomas", "thomas".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
zKManager.zk.create(path+"/ellen", "ellen".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
zKManager.zk.delete(path+"/thomas", -1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.IOException;
import java.util.List;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
public class ZKManager implements Watcher {
private String hostPort="127.0.0.1:2181";
private int timeOut=20000;
private String path="/famliy";
public ZooKeeper zk;
public ZKManager() throws IOException{
zk = new ZooKeeper(hostPort,timeOut,this);
}
public void process(WatchedEvent event) {
System.out.println("/test is change: type="+event.getType()+" | state="+event.getState());
try {
List<String> zNodes=zk.getChildren(path, this);
if(null!=zNodes){
for(String zNode : zNodes){
System.out.println("zNode="+zNode);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行结果:
/test is change: type=None | state=SyncConnected
zNode=thomas
/test is change: type=NodeChildrenChanged | state=SyncConnected
zNode=ellen
zNode=thomas
/test is change: type=NodeChildrenChanged | state=SyncConnected
zNode=ellen
ZKManager 负责创建zookeeper链接。
注:
getChildren getData监控变化,不过只能使用一次
。如果想持续监控的话每次都重新调用这些方法。
zk.getChildren(path, this
);监控子目录的变化,this是一个Watcher(在这里时ZKManager),这样当zookeeper相关路径下的东西改变后就会调用ZKManager的process方法来通知client。
getChildren("/family",this
) ZKManager负责watch family 下子节点的状态,当有变化时调用自己的process方法
getData("/family",this)ZKManager负责watch family自己数据的状态,有变化时调用自己的process方法
分享到:
相关推荐
**尚硅谷2021 ZooKeeper笔记概述** ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和...
资源名称:zookeeper笔记和搭建 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
ZooKeeper笔记 ZooKeeper是一个分布式应用程序协调服务,提供了一个树形命名空间,用于存储和管理数据。 ZooKeeper主要用于分布式应用程序的配置管理、名称服务、分布式同步和提供组服务等。 ZooKeeper命令 * ...
Zookeeper笔记 Zookeeper是一个为分布式应用提供一致性服务的软件,提供配置服务、域名服务、分布式同步、组服务等。作为一个分布式系统的核心组件,Zookeeper 负责各个组件之间的协调服务。 Zookeeper 的安装 ...
自学zookeeper笔记 思维导图类型
### Zookeeper 学习笔记 #### 一、Zookeeper 简介与安装配置 **Zookeeper** 是一个分布式协调服务框架,它提供了一种高效可靠的机制来维护集群中的配置信息、命名服务以及提供分布式锁等功能,使得开发人员能够...
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...
本篇笔记主要围绕这两个技术进行深入探讨,结合尚硅谷的视频教程资源,旨在帮助读者全面理解并掌握这两者的核心知识。 一、Zookeeper:分布式协调服务 Zookeeper是由Apache开发的一款开源分布式协调服务,它提供了...
**Zookeeper:分布式一致性服务详解** Zookeeper是一个开源的分布式协调服务,由雅虎创建并贡献给Apache基金会,广泛应用于大数据、云计算等领域的分布式系统中。它的设计目标是简化分布式环境下的数据管理、配置...
Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现。Zookeeper的设计目标是为分布式应用提供一致性服务,它主要用来解决分布式...
前言学习zookeeper才算是真正跨进分布式这个大门。比较经典的应用是可以作为dubbo推荐的注册中心。首先,我们必须要明确几个我们之前可能不会遇到的但是在分
Zookeeper作为分布式协调服务,其设计初衷就是为了帮助分布式系统维护数据的一致性。Zookeeper的实现基于一种被称为Paxos的算法,Paxos算法是解决分布式系统中一致性问题的一种经典算法。 Paxos算法的核心思想是...
在“尚硅谷大数据技术之Zookeeper.doc”文档中,详细介绍了Zookeeper的架构原理,包括服务器角色(如follower、leader和observer)、Zookeeper的数据模型(如ZNode和路径)、会话机制以及Zookeeper的操作命令等。...
Zookeeper是一个针对大型分布式系统的可靠协调系统,其提供的功能包括配置维护、名字服务、分布式同步、组服务等。它旨在封装好复杂易出错的关键服务,提供简单易用的接口,同时提供性能高效、功能稳定的系统。...
ZooKeeper笔记