Zookeeper的安装配置及基本开发
一、简介
Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。
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=5dataDir=/home/admin1/下载/zookeeper-3.4.8/tmp/zookeeperclientPort=2181server.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");}@Overridepublic 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 {@Overridepublic 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!");}}
Zookeeper的安装配置及基本开发相关推荐
- Web基础配置篇(十一): Zookeeper的安装配置及使用
Web基础配置篇(十一): Zookeeper的安装配置及使用 一.概述 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop ...
- myeclipse怎么运行c语言,windows下MyEclipse安装配置C/C++开发环境
windows下MyEclipse安装配置C/C++开发环境 ,安装MinGW:假设安装路径为c:\MinGW 编辑如下系统变量: 变量名变量值 PATH C:\MinGW\bin; LIBRARY_ ...
- windows环境下Zookeeper的安装配置调试
了解Zookeeper:----> https://blog.csdn.net/gs80140/article/details/51496925 安装jdk 安装Zookeeper. 在官网 ...
- Linux安装配置Java1.8开发环境
Linux安装配置Java开发环境 1 下载Java安装包 链接:https://pan.baidu.com/s/1MzFG9k1Uij_QDnsMA9epNg 提取码:2l26 2 上传JDK到Li ...
- Linux 下安装配置C/C++开发环境 Code::Blocks
Linux 下安装配置C开发环境Code::Blocks 一.提前的话 要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编 ...
- 用友BIP 安装配置专业脚手架开发工具(图文)
对于一些专业的开发,还是需要专业开发工具的,需要自行先上网下载Idea的IntelliJ,这个软件强大到我在刚接触java的时候就用过它,这么多年她是越来越漂亮了哈哈. 安装完之后,现在的版本需要先激 ...
- 安装配置JDK并开发第一个Java程序
(一)安装配置JDK 参看本博 读者在本地开发环境安装JDK时,除了需要选择JDK版本,还需要选择安装哪家厂商出品的JDK.作为初学者可能会有这样的疑问,为什么不同厂商提供了不同的JDK组件呢? 追根 ...
- 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...
- zookeeper 的安装配置及简单使用
===> Zookeeper 是什么? => ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重 ...
最新文章
- 线段树专辑——pku 2886 Who Gets the Most Candies?
- 2019华为全联接大会(汇总)
- 自学python需要多长时间-零基础自学python要多久?
- ST公司STM32F4与STM32F1的区别
- 关于省,市,区联动 java 实现方式
- java 使用.aar_java - 使用grad解析aar库的传递依赖性
- 安卓MP3播放器开发实例(3)之进度条和歌词更新的实现
- .net学习榜样的博客
- bzoj 4880 [Lydsy1705月赛]排名的战争 贪心
- 重学前端学习笔记(八)--JavaScript中的原型和类
- PyQt5学习笔记02----初探Qt Designer 设计师
- Docker安装(安装docker)
- 【Zookeeper】cnxn.saslServer is null cnxn object did not init its saslServer properly
- json格式的简单转换
- Sqlite优化记录:使用全文索引加快检索速度-转
- java获取文件后缀名(正则表达式)+文件名
- 在Hadoop集群上的Hive配置
- 【风马一族_php】常用的语句
- A链接标签点击不会触发任何行为的写法
- 不可不知的量化因子模型选股策略
热门文章
- python编写函数isodd(x)_python函数对象
- C语言playsoundw函数,使用inline hook实现修改PC微信通知铃声-哥哥微信来了
- linux 内核位置无关,Linux内核启动阶段虚实地址映射
- 我的数字万用表怎么了?
- 位置传感器:电位器,电容位置传感器
- linux 查看lv格式,linux lv pv lv 命令
- ace.js ajax 跳转,ace.js中文使用手册,收集比较全面
- php iis mysql windows2003,Windows Server 2003 IIS6.0+PHP5(FastCGI)+MySQL5环境搭建教程 | 系统运维...
- 内核驱动模块Makfle
- 在C语言中,存在的内存的连续性的声明