`
hpgary
  • 浏览: 82916 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java zookeeper 分布式开发

    博客分类:
  • Java
 
阅读更多

1、安装zookeeper

 下载zk http://archive.cloudera.com/cdh5/cdh/5/ 

 配置文件

tickTime=2000
initLimit=10
syncLimit=5
# zk数据保存目录 
dataDir=/usr/local/zookeeper/data
clientPort=2181

 启动:

bin/zkServer.sh start 

客户端命令行链接:

bin/zkCli.sh

2、拷贝zookeeper下的jar包,到应用程序,并使用maven引入相关jar包

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.25</version>
</dependency>


<dependency>
	<groupId>org.apache.zookeeper</groupId>
	<artifactId>zookeeper</artifactId>
	<version>3.4.5-cdh5.10.0</version>
	<scope>system</scope>
	<systemPath>${project.basedir}/lib/zookeeper-3.4.5-cdh5.10.0.jar</systemPath>
</dependency>

  java 代码

	
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ZookeeperContext {

	protected static Logger logger = LoggerFactory.getLogger("zk");
	
	public final int SESSION_TIME_OUT = 2000;
	public ZooKeeper zk;
	/**
	 * 判断zk的链接链接状态
	 * */
	public boolean isConnected(){
		return zk.getState() == ZooKeeper.States.CONNECTED;
	}
	
	/**
	 * 创建zk链接
	 * **/
	public ZookeeperContext(String connectString) {
		try {
                    /**
			 * connectString 链接zookeeper的Ip和端口,多个用逗号隔开例如:
			 * 10.0.0.104:2181,10.0.0.105:2181 sessionTimeout
			 * 客户端和zookeeper链接断开后,数据最长保存的时间 watcher 监控回调,服务器数据修改会回调
			 */
			zk = new ZooKeeper(connectString, SESSION_TIME_OUT, new ZookeeperWatcher());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * zk监听,如果服务器端有什么变化到这里接收
	 * 并继续添加监听
	 * */
	public class ZookeeperWatcher implements Watcher {
		@Override
		public void process(WatchedEvent event) {
			try {
				
				if(null != event.getPath()){
					System.out.println( event );
					if(event.getType() == EventType.NodeChildrenChanged){
						zk.getChildren(event.getPath(), true) ; 
					}else{
						zk.getData(event.getPath(), true, null) ; 
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 在zk创建数据
	 * */
	public void setData(String path,byte[]data , CreateMode createMode){
		try {
			if(zk.exists(path, false) == null){
				zk.create(path, data, Ids.OPEN_ACL_UNSAFE, createMode) ;
			}else{
				zk.setData(path,data,-1);
			}
			zk.getChildren(path, true) ;
		} catch (Exception e) {
			logger.error("setData", e );
		}
	}
	
	public static void main(String[] args)throws Exception {
		ZookeeperContext context = new ZookeeperContext("10.0.0.104:2181"); 
		
		while (!context.isConnected()) {
			Thread.sleep(3000);
		}
		context.setData("/root", "1".getBytes(),CreateMode.PERSISTENT);
		context.setData("/root/hpgary", "gg".getBytes() , CreateMode.EPHEMERAL);
		System.err.println("eee");
		System.in.read() ;
	}

}

 

分享到:
评论

相关推荐

    ZooKeeper分布式过程协同技术详解

    ZooKeeper是由Apache Hadoop项目开发的开源组件,它为分布式应用提供了一个高效、可靠的分布式协调解决方案。在分布式系统中,数据一致性、命名服务、配置管理、集群管理等任务常常变得复杂且难以处理,而ZooKeeper...

    springBoot+dubbo+zookeeper分布式微服务

    本项目"springBoot+dubbo+zookeeper分布式微服务"充分利用了这三个组件的优势,构建了一个高效、可扩展且易于维护的服务网络。以下是对这些技术及其整合应用的详细说明: **SpringBoot** SpringBoot是Spring框架的...

    Zookeeper 分布式过程.pdf

    Apache ZooKeeper是一个开源的分布式协调服务,它主要用来协调分布式应用中那些相对独立的服务。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,为用户程序提供简单易用的接口。本书...

    zookeeper分布式锁实现和客户端简单实现

    在实际应用中,开发人员通常会使用如Java的`org.apache.zookeeper`包或者Python的` kazoo`等客户端库来与Zookeeper交互。这些库提供了丰富的API,使得开发者能够方便地实现包括分布式锁在内的各种功能。 总结,...

    基于Java的ZooKeeper分布式协调系统设计源码

    本源码为基于Java的ZooKeeper分布式协调系统设计,包含934个Java文件、66个PNG文件等,共1500个文件。该项目旨在为用户提供一个全面、便捷的分布式协调解决方案,通过Java、C、Python、Shell、JavaScript、HTML和CSS...

    使用ZooKeeper实现分布式锁

    在处理订单生成的场景中,我们可以这样应用ZooKeeper分布式锁: 1. 当用户发起订单请求时,服务端会尝试在ZooKeeper上创建一个临时顺序节点。 2. 如果创建成功,服务端会检查当前最小序号的节点是否是自己创建的。...

    从Paxos到Zookeeper 分布式一致性原理与实践

    在Java开发中,使用Zookeeper通常涉及到以下知识点: 1. Zookeeper客户端库:Java中可以使用Zookeeper官方提供的zookeeper-clients库,通过ZooKeeper类创建连接,进行会话管理、数据读写、watch监听等操作。 2. 数据...

    Zookeeper分布式系统开发实战[借鉴].pdf

    Zookeeper分布式系统开发实战 Zookeeper是一款开源的分布式协调服务,最初由雅虎研究院开发,后来 BecameApache软件基金会的开源项目。Zookeeper的主要作用是提供一种高效、可靠、可扩展的分布式系统协调机制,用于...

    从PAXOS到ZOOKEEPER分布式一致性原理与实践&zookeeper;-3.4.6总结

    Paxos算法是解决这一问题的经典方案,而ZooKeeper则是Apache基金会开发的一个分布式协调服务,它基于Paxos和其他一致性算法实现,为分布式应用提供可靠的分布式协调服务。 Paxos算法是由Leslie Lamport提出的,它...

    从Paxos到Zookeeper 分布式一致性原理与实践(书签版)

    在实际开发中,Java程序员经常使用Zookeeper的Java客户端库,该库提供了一套方便的API,使得与Zookeeper服务器的交互变得更加简单。此外,Zookeeper还支持多种编程语言的客户端,如Python、C++等,满足不同开发需求...

    zookeeper做分布式锁

    分布式锁是解决多节点系统中同步问题的一种常见技术,ZooKeeper,由Apache基金会开发的分布式协调服务,常被用于实现高效可靠的分布式锁。本文将深入探讨如何利用ZooKeeper来构建分布式锁,并讨论其背后的关键概念和...

    从PAXOS到ZOOKEEPER分布式一致性.rar

    本压缩包文件"从PAXOS到ZOOKEEPER分布式一致性.rar"包含了对这两种技术的深入探讨。 Paxos算法,由Leslie Lamport提出,是一种解决分布式系统中一致性问题的协议。它旨在确保在存在网络延迟、消息丢失或重复等不...

    ssm+dubbo+zookeeper分布式CRUD demo

    【ssm+dubbo+zookeeper分布式CRUD demo】项目是一个典型的Java Web分布式开发示例,它结合了Spring、SpringMVC和MyBatis(SSM)框架,并利用Dubbo作为服务治理框架,配合Zookeeper作为注册中心,实现了服务的高可用...

    dubbo spring zookeeper分布式集群搭建完整例子

    在构建分布式系统时,"dubbo spring zookeeper分布式集群搭建完整例子" 提供了一个实践性的教程,涵盖了多种关键技术和工具。下面将详细解释这个例子中涉及的知识点。 首先,我们来了解一下**SpringMVC**。...

    基于zookeeper实现分布式锁

    zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是集群的管理者。提供了文件系统和通知机制。...在开发项目的过程中,很多大型项目都是分布式部署的,那么我们现在使用zookeeper实现一个分布式锁。

    使用zookeeper实现分布式共享锁

    Zookeeper,一个由Apache Hadoop项目开发的分布式协调服务,为解决这些问题提供了强大的支持。它被广泛用于实现分布式锁、配置管理、服务发现等多个场景。本篇文章将深入探讨如何使用Zookeeper实现分布式共享锁。 ...

    从Paxos到ZooKeeper分布式一致性原理实践 最新版

    《从Paxos到ZooKeeper分布式一致性原理实践》是一本深入探讨分布式系统一致性问题的著作,涵盖了从理论到实际应用的广泛知识。Paxos算法是分布式计算领域中的一个里程碑,而ZooKeeper则是Apache基金会的一个开源项目...

    C#基于zookeeper分布式锁的实现源码

    在C#开发环境中,我们可以借助外部协调服务,如Apache ZooKeeper,来实现分布式锁。ZooKeeper是一个高可用的分布式协调服务,它提供了诸如命名服务、配置管理、分布式同步、组服务等功能。本篇将深入探讨如何在C#中...

    ssm+maven+dubbo+zookeeper分布式架构

    SSM 是 Spring、Spring MVC 和 MyBatis 的缩写,这是一个流行的Java Web开发框架组合。Spring 提供了强大的依赖注入和面向切面编程能力,Spring MVC 用于处理Web请求和响应,而MyBatis则作为一个轻量级的持久层框架...

Global site tag (gtag.js) - Google Analytics