Zookeeper的安装配置及基本开发

一、简介

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

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

ZooKeeper包含一个简单的原语集,[1] 提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

二、工作原理

       Zookeeper的核心是广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。
每个Server在工作过程中有三种状态:
LOOKING:当前Server不知道leader是谁,正在搜寻。
LEADING:当前Server即为选举出来的leader。
FOLLOWING:leader已经选举出来,当前Server与之同步。

三、基本配置

zookeeper的安装和之前的一样,也是有3种安装方式。分为单机、伪集群和集群模式。

1、首先去apache官网下载zookeeper,目前最新版是3.4.8 ,http://www.apache.org/dyn/closer.cgi/zookeeper/

2、解压到你需要安装的目录,例如我是放在/home/admin1/下载/zookeeper-3.4.8下面。

3、在conf目录在做配置:

zoo.cfg

(1)如果你是单机模式的话,就需要做如下配置就可以了。

tickTime=2000
dataDir=/home/admin1/下载/zookeeper-3.4.8/data
dataLogDir=/home/admin1/下载/zookeeper-3.4.8/logs
clientPort=2181

(2)  如果你是伪分布模式的话,则需要做如下配置:zoo.cfg

所谓伪集群, 是指在单台机器中启动多个zookeeper进程, 并组成一个集群. 以启动3个zookeeper进程为例.

tickTime=2000
initLimit=10
syncLimit=5

dataDir=/home/admin1/下载/zookeeper-3.4.8/tmp/zookeeper

clientPort=2181

server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389



1 initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为10, 说明时间限制为10倍tickTime, 即10*2000=20000ms=20s.2 syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为5, 说明时间限制为5倍tickTime,
即10000ms.3 server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.参照zookeeper0/conf/zoo.cfg, 配置zookeeper1/conf/zoo.cfg, 和zookeeper2/conf/zoo.cfg文件. 只需更改dataDir, dataLogDir,
clientPort参数即可.在之前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号server. 该数字必须和zoo.cfg文件中的server.X中的X一一对应./home/admin1/下载/zookeeper1/data/myid文件中写入1,/home/admin1/下载/zookeeper2/data/myid文件中写入2,/home/admin1/下载/zookeeper3/data/myid文件中写入3.分别进入/home/admin1/下载//zookeeper1/bin,
/home/admin1/下载//zookeeper2/bin, /home/admin1/下载//zookeeper3/bin三个目录, 启动server.

bin/zkServer.sh  start

关闭就是后面是stop.
启动成功后用jps查看进程,
有ZooKeeperMain就是对的(若没有配置其他
机器的情况下)

可以启动客户端测试下:

bin/zkCli.sh -server localhost:2181


(注:如果是远程连接,把localhost换成指定的IP即可)

然后,就可以用一些基础命令,比如 ls ,create ,delete ,get 来测试了(关于这些命令,大家可以查看文档)

(3)  集群模式的配置和伪集群基本一致.
由于集群模式下, 各server部署在不同的机器上, 因此各server的conf/zoo.cfg文件可以完全一样.

四、开发测试

测试连接,我们可以有3种方法。

4.1  zkCli.sh

可以使用帮组命令进入各种操作。

4.2、在eclipse上操作:

新建java工程,需要导入zookeeper里面的jar包 ,zookeeper-3.4.8.jar。

新建createSession.java

public class CreateSession implements Watcher { 

	private static ZooKeeper zookeeper;
	public static void main(String[] args) throws IOException, InterruptedException {
		zookeeper = new ZooKeeper("localhost:2181",5000,new CreateSession());
		System.out.println(zookeeper.getState());

		Thread.sleep(Integer.MAX_VALUE);
	}

	private void doSomething(){

		System.out.println("do something");
	}
	@Override
	public void process(WatchedEvent event) {

		System.out.println("收到事件:"+event);
		if (event.getState()==KeeperState.SyncConnected){

			if (event.getType()==EventType.None && null==event.getPath()){
				doSomething();
			}
		}
	}

}

还需要一个接口:

MyWatcher.java

public class MyWatcher implements Watcher {

	@Override
	public void process(WatchedEvent event) {
		// TODO Auto-generated method stub

	}

}

运行结果如下:代表连接成功了。

4.3 使用ZKClient 

在github中下载源码包,https://github.com/sgroschupf/zkclient

在新建的eclipse项目中添加库依赖,就可以了。

测试代码

import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.serialize.SerializableSerializer;

public class CreateSession {

	public static void main(String[] args) {
		ZkClient zc = new ZkClient("localhost",10000,10000,new SerializableSerializer());
		System.out.println("conneted ok!");
	}

}
时间: 2024-09-04 17:53:49

Zookeeper的安装配置及基本开发的相关文章

ZooKeeper-3.3.4集群安装配置

ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务--分布式同步(Distributed Synchronization).命名服务(Naming Service).集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务.ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证Z

PHP开发环境安装配置全攻略

PHP是常用的Web网站开发工具之一,以简单和库函数丰富闻名.与.NET和Java不同的是,PHP没有大公司为后台,他的支持主要来源于开源社区.在PHP的发展历程上PHP4和PHP5是两个很重的历程,在PHP4中加入了Zend引擎,在PHP5中提供了完善的面向对象支持,成为真正的OO语言. 在微软发布.NET以及Sun推出J2EE后,很多人认为PHP会逐渐衰落下去,不好意思也包括小编,但5年过去了,PHP的爱好者有增无减,PHP社区依然热闹非凡,小编经过痛苦反思后,决定自我救赎,于是组织了这个针

Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 详细图文讲解

android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家. 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装CDT插件 6.安装Sequoyah插件 7.JNI编译环境配置 画了一个思维导图让大家一目了然配置过程   -------------------------

Zookeeper的安装的配置

安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两个方面介绍 Zookeeper 的安装和配置. 单机模式 单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:/home/zookeeper-3.2.2 下,Zookeeper 的启动脚本在 bin 目录下,Linux 下

Windows7下PHP开发环境安装配置图文方法_php实例

      操作系统:Windows 7 Ultimate       WEB服务器:IIS 6.1(内部版本7600).       数据库:MySql5.0.67       PHP版本:5.2.13       我还担心Win7下可能会不兼容,结果是一点问题都没有.    一.安装MySql数据库       MySql数据库在这里下载:http://www.mysql.com/downloads/ 客户端工具Navicat(导航猫)在这里下载:http://www.navicat.com

win7下安装配置node.js+express开发环境_node.js

1.安装 node.js. 进入官网的下载地址:http://www.nodejs.org/download/ . 选择Windows Installer或者选择Windows Installer (.msi) 32-bit,下载安装包. 下载完成后,双击安装. 2.安装 Express. 通过nmp包管理器进行安装,安装分为: 全局安装:自动安装到"C:\Users\[当前用户]\AppData\Roaming\npm"下,并且自动将路径添加到环境变量"Path"

Hadoop学习之ZooKeeper理论知识和集群安装配置

ZooKeeper集群安装配置和理论知识 1.   简介:zookeeper是Google的Chubby的一个开源实现,是hadoop的分布式协调服务 2.    Zookeeper(简称zk)包含一个简单的原语集,分布式应用程序可以给予它实现同步服务,配置维护和命名服务等 3.    Zk的设计目标 a)      简单化:通过共享体系的,命名空间进行协调,与文件系统相似,有一些数据寄存器组成,被称为Znode.Zk的数据是放在内存中的,zk可以达到高吞吐量.低延迟. Zk能用在大型.分布式的

WIN10安装配置MARC2014开发环境

MARC作为著名的有限元软件其非线性计算能力极其强大,MSC公司在MARC2010之后开始对其界面进行了改变,一方面是拓展其功能,另一方面就是改变一下MARC经典界面的风格,使用了新界面时有种回到现代的感觉了. MARC之所以用户面如此之广,除了其自身功能强大以外,其二次开发接口也是相当的多.与其对比的ABAQUS的隐式计算接口只有50个左右,而MARC的接口在200+左右,因此善于使用其二次开发功能将会使得MARC功能更加丰富.在进行MARC二次开发环境配置时,首先需要了解一下相应的Fortr

怎么安装PHP开发环境?php环境安装配置

搭建PHP的开发环境 时间: 8.1日 要求: 手动安装php环境(集成环境不算, 仅winow下即可, linux作参考, 但题linux下也可出). 包括mysql+php+apache+phpadmin, 版本不限. 要求能进行web测试. 安装开发IDE,包括(zend 5+ editplus+emeditor+dreamweaver) 手册: http://www.php.net/manual/zh/install.windows.php http://www.php.net/manu