文章目录
1. Zookeeper是做什么的?
1.1 简介
Zookeeper是Hadoop项目中的一个子项目,是一个分布式应用程序协调服务,是Google的Chubby的一个开源实现。
这里的分布式应用程序协调服务——
- 从对象上看,Zookeeper是专门针对分布式集群的
- 从功能上看,Zookeeper提供了**(类似文件系统的)数据存储和通知机制**,维护和监控存储数据的状态变化,若发生变化,则通知相应的监听的客户端,从而达到基于数据的集群管理
Zookeeper的数据存储结构如下,与文件系统非常类似(下文称为类文件系统)——
- 每个子目录项成为znode,被路径唯一标识,如
Member1
被标识为/GroupMembers/Member1
- 可以增加、删除znode,也可以在znode下增加、删除znode,且znode可以存储数据
- znode可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的
Zookeeper的架构如下[3],有若干个数据一致的Server,存放着上述类文件系统,Client连接到任何一个Server,都可以得到相同的视图,具有高度容错性。
1.2 应用场景
Zookeeper的应用场景有:命名服务、配置管理、集群管理、分布式锁、队列管理。
- 命名服务:分布式应用中,通常需要有一套完整的命名规则,能够产生唯一的名称。只需在Zookeeper的类文件系统中创建一个znode即可
- 配置管理:在分布式应用中不同机器都需要一些配置信息,对每台机器单独修改很麻烦,可使用Zookeeper将配置信息存储在znode中并进行监控,一旦配置信息变化,所有机器都会收到通知,再进行修改即可
- 集群管理:知道是否有节点加入或退出、选举master。对