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

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

转载于:https://my.oschina.net/chenjiuwei/blog/1561051

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值