Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中常常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。node
Zookeeper分红客户端和服务端两部分,服务端一般运行于集群模式,统一为客户端提供分布式数据一致性管理服务,集群可提供水平扩展能力,以及避免单点故障。服务器
ZooKeeper让分布式进程可经过共享的、与标准文件系统相似的分层名字空间相互协调。名字空间由数据寄存器(在ZooKeeper世界中称做znode)构成,这与文件和目录相似。与用于存储设备的典型文件系统不一样的是,ZooKeeper的数据每每常驻内存提供服务,提升性能。框架
Zookeeper还提供了数据动态监测机制, 客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增长删除)时,客户端会触发注册事件。 分布式
ZooKeeper的实现很重视高性能、高可用性,以及严格的顺序访问。高性能意味着可将ZooKeeper用于大的分布式系统。可靠性使之可避免单点失败。严格的顺序访问使得客户端能够实现复杂的同步原语。oop
服务端一般有多台服务器,这些服务器都经过QuorumPeer进程维持分布式系统间的数据交换,选举领导者(Leader)和追随者(Follower),动态监控集群,一旦发生节点故障则从新启动选举流程,选出新的Leader。每一个服务器维护相同的一份全局数据,经过QuorumPeer维持数据之间的同步,这样提供高可靠性和横向扩展性。性能
本节从Zookeeper客户端的角色出发,理解Zookeeper的经常使用操做方法。spa
客户端提供的操做包括启动、关闭、建立节点、设置节点数据、删除节点、获取节点、获取节点数据等。这里只是取其中的几个命令作为示例。命令行
zkCli.sh进程
Connect 10.10.27.21事件
建立一个新的 znode ,使用 create /test “hello” 。这个命令在根目录下建立了一个新的 znode 节点“ test ”以及与它关联的字符串:
使用 ls 命令来查看当前 ZooKeeper 中所包含的内容,这里显示/目录下有test、zookeeper两个子节点。
运行 get 命令来确认第二步中所建立的 znode ,显示znode的数据、建立时间等状态信息。
示例数据:
经过 set 命令来对 zk 所关联的字符串进行设置,设置/test路径的数据为“welcome!”。
delete /test