`
乡里伢崽
  • 浏览: 108166 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Zookeeper 分布式配置管理

阅读更多
原创

配置中心代码:

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();
		}
    }  
	
}
分享到:
评论

相关推荐

    zookeeper 分布式集群管理应用, Dubbo 实现远程调用 服务降级

    zooKeeper 是一个开放源码的分布式协调服务,主要为了解决分布式架构下数据一致性问题, 它是集群的管理者, 监视...分布式配置中心、分布式注册中心、分布式锁、分布式队列、集群选举、分布式屏障、发布/订阅等场景。

    Zookeeper熟悉和用途综述

    如:集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式通知协调等。 越来越多的分布式计算开始强依赖ZK,比如Storm、Hbase Zookeeper对分布式开发带来很多便利,用ZK的独有特性巧妙地解决...

    Zookeeper_安装和配置

    Zookeeper可以进行集群的配置管理,名字服务,分布式锁,集群管理等等

    zkconf:Apache ZooKeeper仲裁配置生成器

    ” 它在一个简单的界面中公开了常见的服务,例如命名,配置管理,同步和组服务,因此您不必从头开始编写它们。 您可以现成使用它来实现共识,组管理,领导者选举和状态协议。 您可以根据自己的特定需求在此基础上...

    Linux下ZooKeeper分布式集群安装教程

    ZooKeeper 主要应用场景包括集群管理(主从管理、负载均衡、高可用的管理)、配置文件的集中管理、分布式锁、注册中心等。实际项目中,为了保证高可用,ZooKeeper 都是以分布式集群的方式进行安装的,至少需要三个...

    分布式工程配置zookeeper化zkconfigutil.zip

    分布式系统配置项zookeeper化,可实现动态更新,极大方便系统的配置管理,彻底摆脱配置文件,使用annotation实现,easy play! 这是一个非常好用的使用zookeeper配置(分布式)工程的组件,使用java注解实现,想...

    基于SpringBoot+Zookeeper+Seata实现Dubbo分布式事务管理系统源码+超详细项目说明.7z

    SpringBoot2.1.5 + Dubbo 2.7.3 + Mybatis 3.4.2 + Zookeeper 3.4.14 +Seata 1.4.0整合来实现Dubbo分布式事务管理,使用Zookeeper 作为 Dubbo和Seata的注册中心和配置中心,使用 MySQL 数据库和 MyBatis来操作数据。...

    分布式服务框架Zookeeper介绍、原理及应用

    Zookeeper分布式服务框架是ApacheHadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。Zookeeper中的角色主要有...

    分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    存储描述zookeeper的简介,用于自身日后学习

    分布式系统中zookeeper实现配置管理+集群管理

    Kafka在很多公司被用作分布式高性能消息队列,kafka之前我只用过redis的list来做简单的队列处理,也还算好用,可能数据量比较小,也是单机运行,未出现过问题,用作轻量级消息队列还是比较好用的。而redis的作者...

    zookeeperDesign::star::star::star:zk的设计与使用(集群,dubbo,分布式锁,master选举,负载均衡,watch,权限等)

    zookeeper分布式集群管理? ! zookeeper分布式注册中心? ! zookeeper分布式JOB? ! zookeeper分布式锁? ! zookeeperZAP协议源码分析? ! zookeeper的启动流程分析? ! zookeeper快照与事物日志的存储结构? - 如果你不...

    zookeeper面试专题.pdf

    8.zk 的配置管理(文件系统、通知机制) 9.Zookeeper 集群管理(文件系统、通知机 制) 10.Zookeeper 分布式锁(文件系统、通知 机制) 11.获取分布式锁的流程 12.Zookeeper 队列管理(文件系统、通知 机制) 13....

    一步到位分布式开发Zookeeper实现集群管理

    Zookeeper是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。Zookeeper的核心是广播,这个机制保证了各个Server...

    分布式软件测试管理系统的设计与实现

    dubbo + zookeeper分布式rpc服务 redis缓存 mysql数据库 flowable工作流 mybatis、jdbcTemplate、spring jpa持久层 hibernate-validation数据校验 spring-cloud-config管理配置 其他 nginx反向代理 前端: 采用...

    分布式服务框架Zookeeper—管理分布式环境中的数据

    本文介绍的Zookeeper是以3.2.2这个稳定版本为基础,,Zookeeper的安装非常简单,下面将从单机模式和集群模式两个方面介绍Zookeeper的安装和配置。单机安装非常简单,只要获取到Zookeeper的压缩包并解压到某个目录如...

    分布式服务框架Zookeeper入门学习

    提供功能:命名服务配置管理集群管理分布式锁队列管理特性:顺序一致性:从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到ZooKeeper中。原子性:所有事务请求的结果在集群中所有机器上的应用情况...

    04分布式协调服务器Zookeeper.pdf

    其主要功能包括:配置维护、域名服务、分布式同步、集群管理等。 zookeeper 的官网: http://zookeeper.apache.org Consul、Doozerd、Etcd 1.2一致性 zk 是如何保证分布式系统的一致性的呢?是因为 zk 具有以下几...

    分布式服务框架Zookeeper

    分布式服务框架是ApacheHadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍 ...

    zookeeper.doc

    1.1 ZooKeeper概述 Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题,例如怎样避免...诸如:统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等功能。

    分布式基础信息管理系统swall.zip

    swall是一个基于zookeeper实现的分布式基础信息管理系统(Infrastructure Management)可以用于管理特别是架构比较灵活的服务,比如游戏。用swall, 你不用登陆到具体的服务器去操作,你指需要在一台机器上面就可以...

Global site tag (gtag.js) - Google Analytics