文档章节

Zookeeper 的功能,安装使用方法,可视化工具ZooInspector

 逝水丶
发布于 2017/11/05 15:30
字数 757
阅读 1515
收藏 0

http://zookeeper.apache.org/
Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.


一、zookeeper提供了什么

1、文件系统

Zookeeper维护一个类似文件系统的数据结构:
每个子目录项如 zookeeper 都被称作为 znode,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。

znode有四种类型:
PERSISTENT:                          持久化目录节点
PERSISTENT_SEQUENTIAL:    持久化顺序编号目录节点
EPHEMERAL:                          临时目录节点
EPHEMERAL_SEQUENTIAL:    临时顺序编号目录节点

2、通知机制 Watcher

客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。

可以注册watcher的方法:getData、exists、getChildren。
可以触发watcher的方法:create、delete、setData。连接断开的情况下触发的watcher会丢失。
一个Watcher实例是一个回调函数,被回调一次后就被移除了。如果还需要关注数据的变化,需要再次注册watcher。
New ZooKeeper时注册的watcher叫default watcher,它不是一次性的,只对client的连接状态变化作出反应。


二、如何使用Zookeeper

1、单机模式部署

配置JAVA环境变量: JAVA_HOME
创建配置文件 zookeeper/conf/zoo.cfg:

tickTime=2000
dataDir=/data/zookeeper
clientPort=2181

tickTime: 客户端与服务端连接的心跳间隔(毫秒)。 
dataDir: 数据文件目录。 
clientPort: 客户端连接服务端的端口。

运行启动脚本
linux:           zookeeper/bin/zkServer.sh
Windows:    zookeeper/bin/zkServer.cmd

2、集群模式部署、伪集群部署

配置文件 zoo.cfg:

tickTime=2000
dataDir=/tmp/zookeeper
clientPort=2181

initLimit=5
syncLimit=2
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

initLimit :服务端集群之间初始化连接的心跳单位。
syncLimit :服务端集群之间同步数据的心跳单位。
server.{myid}={每个实例ip}:{集群交换信息的端口}:{集群选举Leader的端口}

clientPort: 每个实例不能相同。
myid: 集群中服务器编号,需要在dataDir目录中创建一个myid文件,内容就是编号的值。
伪集群模式,由于ip地址相同,所以所有的端口不能相同。

3、通过命令行连接

Zookeeper/bin/zkCli.sh 或 zkCli.cmd

zkCli.sh -server [ip]:[port]

-- 查看
ls  /
-- 创建节点及数据
create  /zoo  "mydata"
-- 获取节点数据
get  /zoo
-- 设置(修改)节点数据
set  /zoo  "newData"
-- 删除节点
delete  /zoo

4、通过JAVA API连接

ZooKeeper zk = new ZooKeeper("127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183", 5000, new Watcher() {
	@Override
	public void process(WatchedEvent event) {
		System.out.println("event: " + event.getType());
	}
});

zk.create("/zoo", null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zk.create("/zoo/node", "nodeData".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zk.setData("/zoo", "zooData".getBytes(), -1);

System.out.println(new String(zk.getData("/zoo", false, null)));
System.out.println(zk.getChildren("/zoo", false));

zk.delete("/zoo/node", -1);
zk.delete("/zoo", -1);

zk.close();

5、Zookeeper可视化工具ZooInspector

https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

 

三、Zookeeper在中艺库分布式图片处理项目中的应用

 

 

 

参考资料:
http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html
https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
http://www.open-open.com/lib/view/open1415453633887.html

© 著作权归作者所有

粉丝 0
博文 6
码字总数 1875
作品 0
浦东
私信 提问
2018-08-14期 Zookeeper客户端连接工具ZooInspector使用方法

一、工具名称 ZooInspector 作用是可以利用该工具图形化浏览ZK中的文件及文件夹 二、使用方法 1、解压工具ZooInspector.zip到指定目录,这里放在D:ZooInspector 2、进入D:ZooInspectorbuild...

JackmaSong
2018/08/14
0
0
zookeeper客户端管理工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80598056 zookeeper 的监控工具 公司很多产品会使用zookeeper,比如Meta消息中间...

追风筝的猪
2018/06/06
0
0
docker zookeeper 集群搭建

前言 其实zookeeper在一般的公司的应用不太多,注册中心、分布式锁、选举等等。之前用dubbo,就会用到zookeeper作为服务注册中心,现在转向springcloud,就很少用zookeeper了。但是近期研究分...

田心双木
2018/09/05
3.8K
0
Apache ZooKeeper 3.3.0 发布

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务 等。ZooKeeper的目标就是封装好复杂易出错的关键服务...

红薯
2010/03/27
529
1
dubbo学习笔记 第一章 zookeeper安装配置

dubbo的实际使用中,基本都是使用zookeeper来管理它的服务,以及实现分布式调用。至于zookeeper是什么,具有什么用户,大家可以百度搜索了解一下。实际生产环境中,zookeeper的应用服务数目,...

sesamefox
2017/10/26
104
0

没有更多内容

加载失败,请刷新页面

加载更多

前端面试题汇总

一. HTML常见的兼容性 1.HTML5 标签在低版本浏览器不兼容 解决办法:使用html5shiv库,引入下列语句 <!--[if lte IE 8]> <script src="https://cdn.bootcss.com/html5shiv/r29/html5.js"></sc......

蓝小驴
35分钟前
10
0
OSChina 周四乱弹 —— 我气的脸都黑了!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐《Red Battle》- 高橋李依 / 豊崎愛生 《Red Battle》- 高橋李依 / 豊崎愛生 手机党少年们想听歌,请使劲儿戳(这里) @丶Lion ...

小小编辑
48分钟前
631
22
找OSG教程, B站就有

https://www.bilibili.com/video/av64849038?from=search&seid=11632913960900279653

洛克人杰洛
今天
6
0
学习记录(day07-Vue组件、自定义属性、自定义事件)

[TOC] 1.1.1什么是组件 一个vue文件就是一个组件 组件将html标签/css样式/对应JS打包成一个整体,也可以理解钻进一个具有样式和特效的自定义标签。 一、编写组件(提供方)<template> <di...

庭前云落
今天
5
0
使用Prometheus监控SpringBoot应用

通过之前的文章我们使用Prometheus监控了应用服务器node_exporter,数据库mysqld_exporter,今天我们来监控一下你的应用。(本文以SpringBoot 2.1.9.RELEASE 作为监控目标) 编码 添加依赖 使...

JAVA日知录
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部