原创
配置中心代码:
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.data.Stat;
public class ConfigCenter implements Watcher{
private ZooKeeper zk = null;
private CountDownLatch connectedSemaphore = new CountDownLatch( 1 );
public void createConnection( String connectString, int sessionTimeout ) {
try {
zk = new ZooKeeper( connectString, sessionTimeout, this );
connectedSemaphore.await();
} catch ( InterruptedException e ) {
System.out.println( "连接创建失败,发生 InterruptedException" );
e.printStackTrace();
} catch ( IOException e ) {
System.out.println( "连接创建失败,发生 IOException" );
e.printStackTrace();
}
}
public void process(WatchedEvent event) {
System.out.println( "configcenter 收到事件通知:" + event.getState() +"\n" );
if ( KeeperState.SyncConnected == event.getState() ) {
connectedSemaphore.countDown();
}
}
void updateConfig(String znode,String str) {
try {
Stat s = this.zk.exists(znode, true);
this.zk.setData(znode, str.getBytes(), s.getVersion());
byte[] value = this.zk.getData(znode, null, new Stat());
String res = new String(value);
System.out.println("res ="+res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
监听客户端代码:
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.Watcher.Event.KeeperState;
public class ZooKeeperWatcher implements Watcher ,Runnable{
private ZooKeeper zk = null;
private CountDownLatch connectedSemaphore = new CountDownLatch( 1 );
public void createConnection( String connectString, int sessionTimeout ) {
// this.releaseConnection();
try {
zk = new ZooKeeper( connectString, sessionTimeout, this );
connectedSemaphore.await();
} catch ( InterruptedException e ) {
System.out.println( "连接创建失败,发生 InterruptedException" );
e.printStackTrace();
} catch ( IOException e ) {
System.out.println( "连接创建失败,发生 IOException" );
e.printStackTrace();
}
}
public void process(WatchedEvent event) {
System.out.println( "zookeeperwatcher 收到事件通知:" + event.getState() +"\n" );
try {
zk.exists("/conf2", true);////不知道为什么一定要加上这句话,下次事件到来时,才会触发process事件
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
if ( KeeperState.SyncConnected == event.getState() ) {
connectedSemaphore.countDown();
}
}
public void run() {
try {
synchronized (this) {
while (true) {
wait();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
测试代码:
import java.io.IOException;
import org.apache.zookeeper.KeeperException;
public class test {
public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
try{
ZooKeeperWatcher zw1 = new ZooKeeperWatcher();
zw1.createConnection("192.168.26.141:2181", 1000);
ZooKeeperWatcher zw2 = new ZooKeeperWatcher();
zw2.createConnection("192.168.26.141:2182", 1000);
new Thread(zw1).start();
new Thread(zw2).start();
ConfigCenter cc = new ConfigCenter();
cc.createConnection("192.168.26.141:2181", 1000);
cc.updateConfig("/conf2","a");
cc.updateConfig("/conf2","b");
cc.updateConfig("/conf2","c");
cc.updateConfig("/conf2","d");
}catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
《从Paxos到Zookeeper分布式一致性原理与实践》是一本深入探讨分布式系统一致性问题的著作,其中重点讲解了Paxos算法与Zookeeper在实际应用中的理论与实践。Paxos是分布式计算领域中著名的共识算法,为解决分布式...
这种设计使得ZooKeeper能有效地处理命名服务、配置管理、集群同步、分布式锁等场景。在实际应用中,ZooKeeper常用于构建分布式服务框架,如Hadoop、HBase、Kafka等。 本书首先会介绍ZooKeeper的基本概念和架构,...
它提供了一套完整的工具和服务,帮助开发者解决分布式应用程序中的常见问题,如命名服务、配置管理、集群管理等。Zookeeper的设计基于一个简单的层次化命名空间模型,并采用了高效的复制协议来实现数据的一致性和高...
本项目"springBoot+dubbo+zookeeper分布式微服务"充分利用了这三个组件的优势,构建了一个高效、可扩展且易于维护的服务网络。以下是对这些技术及其整合应用的详细说明: **SpringBoot** SpringBoot是Spring框架的...
在分布式系统中,数据一致性、命名服务、配置管理、集群管理等任务常常变得复杂且难以处理,而ZooKeeper则通过提供一系列简单的原语来帮助解决这些问题。 1. **ZooKeeper的基本概念** - **节点(ZNode)**:...
《从PAXOS到ZOOKEEPER分布式一致性》是一份深度探讨分布式系统一致性问题的资料,其中涵盖了PAXOS算法的基础理论以及ZOOKEEPER在实际应用中的实践。分布式一致性是构建大规模、高可用系统的关键技术,对于理解和解决...
整体而言,《ZooKeeper:分布式过程协同技术详解》为读者提供了一个全面的ZooKeeper学习和使用指南,不仅涵盖了ZooKeeper的基础知识和API使用,还深入到其内部机制和集群管理的层面,使读者能够全面掌握ZooKeeper的...
总之,Zookeeper是分布式应用程序的重要工具,它通过提供配置管理、名字服务、分布式同步和组服务等功能,有效地解决了分布式环境中的许多挑战。对于理解和使用Zookeeper-3.4.13,开发者需要深入学习其API、设计模式...
Zookeeper提供了一种类似于文件系统的数据模型,可以用于命名服务、配置管理、集群管理、分布式锁等场景。它具有强一致性、高可用性和高性能的特点,是实现分布式锁的理想选择。 **Zookeeper的分布式锁实现原理** ...
Zookeeper的主要使命是作为分布式环境中的一个中心化服务,用于管理、协调和监控各个分散的节点。它并不负责存储大量用户数据,而是专注于维护分布式系统中的元数据,如配置信息、命名服务、组服务、分布式同步等。...
书中详细介绍了如何配置和使用ZooKeeper,包括创建、删除、更新ZNode,设置和触发watch事件,以及如何利用ZooKeeper进行服务发现、分布式锁、配置管理等实践应用。此外,还涵盖了ZooKeeper的故障恢复机制、监控与...
Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的、开放源码的分布式应用程序协调服务,是集群管理的基石,提供了诸如配置维护、命名服务、分布式同步、组服务等分布式基础服务。本教程将深入讲解在...
5. 实战应用:通过具体案例展示如何在实际项目中运用Zookeeper解决分布式协调问题,例如配置管理、服务发现、分布式锁等。 6. 高可用与故障恢复:探讨Zookeeper的容错机制,如何保证服务的高可用性和数据的一致性。 ...
ZooKeeper是由雅虎创建并开源的一个高性能、高可用、基于分布式的协调服务,它为分布式应用提供一致性服务,如命名服务、配置管理、集群管理等。ZooKeeper的设计目标是简化分布式环境下的数据管理,通过提供简单的...
在分布式系统中,数据一致性、服务发现、配置管理、锁服务等都是常见的挑战,而ZooKeeper则提供了统一的接口来解决这些问题。 一、ZooKeeper的基本概念 1. ZooKeeper节点:ZooKeeper的数据存储以树形结构进行组织,...
Zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...
Zookeeper是Apache软件基金会的一个开源项目,它提供了一套分布式协调服务,广泛应用于分布式环境下的配置管理、命名服务、分布式锁、集群管理等多个场景。Zookeeper基于Paxos算法的变种ZAB(Zookeeper Atomic ...
Zookeeper提供了一套简单易用的API,使得开发者可以轻松地在分布式环境中实现命名服务、配置管理、领导者选举、锁服务等功能。书中的内容可能包括了Zookeeper的架构设计,如ZNode的层次结构、Watcher机制、会话和...
Zookeeper,是由Apache开发的开源分布式协调服务,它基于Paxos等一致性算法实现,并提供了更高级别的API,使得开发者能够更容易地实现分布式锁、配置管理、命名服务等功能。Zookeeper的主要特性包括: 1. **原子性*...