zookeeper篇

zookeeper特性

一个客户端做出修改,所有客户端可以立即发现修改内容

初识zookeeper

zookeeper的一个应用场景:有一组服务器提供某种服务,我们希望客户端都能找到其中一台服务器,然后我们需要维护这组服务器的成员列表,这个列表不能在某个服务器上,来避免单点故障,并且如果某个服务器出现故障,那么就需要从列表中删除改节点。这个场景不是一个被动的分布式结构,它能够在某个外部事件发生主动的修改数据结构,zookeeper提供的就是这种服务。下面介绍它是如何实现这种应用的。

zookeeper的基本单元是znode,znode可以是一个文件,也可以是一个目录,所有的znode构成了一个层次化的空间,建立成员列表的方式就是利用这种层次关系

hadoop和zookeeper版本 hadoop和zookeeper的关系_zookeeper


javaApi及znode类型

在java程序中创建znode时,znode类型有短暂的和持久的两种,短暂的就是当程序结束时,zookeeper会删除相应的znode,持久的是永久的保持在磁盘上,除非程序主动删除。可以在java中实现加入组,删除组,发现组成员等操作。

znode的监察机制及其他操作

znode以某种方式发生变化时,“观察”机制可以让客户端得到通知,例如客户端可以对某个znode调用exists操作,同时设定观察,如果这个znode不存在,exists会返回false,过一段时间后,另外一个用户创建了znode,那么观察会通知前一个客户端这个znode被创建了。znode还有muti操作(将多个操作进行原子组合),ACL列表(权限列表)。

znode的分布式更新方式

zookeeper在集群上储存znode的方式是,它确保znode树的每一个修改都会复制到集合体中超过半数的机器上用来保持zookeeper的高可用性,使用zab协议来实现这个目的,zab协议有两个阶段:1、领导者选举。2、原子广播。

znode典型应用场景

配置服务

组员管理

锁服务。

以上参考《Hadoop权威指南》

《Hadoop权威指南》链接:https://pan.baidu.com/s/1saxupYjvPBVBbLmJ7DgEOQ

提取码:xe12