Zookeeper是一个分布式的应用程序协调服务,集群的管理者,监视着集群中各个节点的状态,根据节点的反馈进行下一步的合理操作,将接口和系统稳定高效的提供给用户。 1、Zookeeper提供了文件系统和通知机制用于管理集群服务。 Zookeeper文件系统,每个子目录项如NameService成为znode,可以增加和删除znode,有四种类型的znode: 1)presistent(持久化目录节点)-客户端与zookeeper断开连接后,该节点依然存在; 2)presistent(持久化顺序编号目录节点)—客户端与zookeeper断开连接后,该节点依旧存在,给该节点名称顺序编号; 3)ephemeral_sequential(临时目录节点)—客户端与zookeeper断开连接后,该节点被删除; 4)ephemeral_sequential(临时顺序编号目录节点)-客户端与zookeeper断开连接后,该节点被删除,给该节点名称顺序编号。 通知机制:客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,ZK会通知客户端。
2、ZK做了什么:命名服务;配置管理;集群管理;分布式锁;队列管理 命名服务:在ZK的文件系统里创建一个目录,即有唯一的path,在我们无法确定上游程序的部署机器时即可与下游程序约定好path,通过path即能互相探索发现。 配置管理:程序总是需要配置的,如果程序分散部署在多台机器上,要逐个改变配置就变得很困难,现在把这些配置全部放到ZK上,保存在ZK的某个节点中,然后所有相关的应用对这个目录节点进行监听,一但配置信息发生变化,每个应用程序就会收到ZK通知,然后从ZK获取新的配置信息应用到系统中就好。
集群管理:集群管理关心是否有机器退出和加入、选举leader。 所有机器约定在父目录GroupMembers下创建临时目录节点,然后监听父目录节点的子节点变化消息,一但有机器挂掉,该机器与ZK连接断开,所创建的临时目录节点被删除,所有其它机器都收到通知:某个兄弟目录被删除,其它所有机器都知道,加入某个机器,其它机器也知道。
3、ZK工作原理: ZK的核心是原子广播,这保证了各个server之间的同步,leader和server同步,选取leader是恢复模式(选主)和广播模式(同步)。 每个server的状态:LOOKING(当前server不知道leader是谁,正在搜寻);LEADING(当前server即为选举出来的leader);FOLLOWING(leader已经选举出来,该server与之同步)。