首先我们来讲一下zookeeper要解决什么问题。在大型分布式系统中经常会存在下面的几类问题:
1.分布式系统中,经常需要一个公共的存储系统,用来存储一些配置信息。
2.分布式系统中,经常需要一个管理中心来协调各个节点的变化。
然后我们再来看看zookeeper是如何解决上面的问题的:
1.Zookeeper维护一个类似文件系统的数据结构
和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,并且znode是可以存储数据的。
2.客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。
简单的说,zookeeper提供了一个文件系统和基于该文件系统变更的通知机制。
Zookeeper整体架构
zookeeper不但提供了文件系统和基于文件系统变更通知的功能,还提供了一套高可用的集群服务。zookeeper的整体架构入下图,主要由客户端和服务端组成,客户端可以连接任意服务端进行操作,但对于事务操作,必须统一交给leader服务器处理,然后再同步给其他的服务器。zookeeper采用的最终一致性原则。