Zookeeper文件系统及监听机制
1,概述
官方文档上这么解释
zookeeper
,它是一个分布式服务框架,是
Apache Hadoop
的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
简单来说
zookeeper=
文件系统
+
监听通知机制
。
2,文件系统
2.1,示意图
每个子目录项如
NameService
都被称作为
znode(
目录节点
)
,和文件系统一样,我们能够*的增加、删除
znode
,在一个
znode
下增加、删除子
znode
,唯一的不同在于
znode
是可以存储数据的。
2.2,四种类型的znode:
PERSISTENT-
持久化目录节点
客户端与
zookeeper
断开连接后,该节点依旧存在
PERSISTENT_SEQUENTIAL-
持久化顺序编号目录节点
客户端与
zookeeper
断开连接后,该节点依旧存在,只是
Zookeeper
给该节点名称进行顺序编号
EPHEMERAL-
临时目录节点
客户端与
zookeeper
断开连接后,该节点被删除
EPHEMERAL_SEQUENTIAL-
临时顺序编号目录节点
客户端与
zookeeper
断开连接后,该节点被删除,只是
Zookeeper
给该节点名称进行顺序编号
3,监听机制
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,
zookeeper
会通知客户端。
zookeeper
功能非常强大,可以实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能,我们这里拿比较简单的分布式应用配置管理为例来说明。
假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到
zookeeper
上去,保存在
zookeeper
的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到
zookeeper
的通知,然后从
zookeeper
获取新的配置信息应用到系统中。