Apache Zookeeper 是由Apache Hadoop 的子项目发展而来,之后正式成为了Apache 的顶级项目。
Zookeeper 是一个典型的分布式数据一致性的解决方案,它 为分布式应用提供了高效可靠的分布式协调服务,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调与通知、集群管理、Master 选举、分布式锁等功能。
Zookeeper 几个基本概念
集群角色
Zookeeper 没有沿用传统的Master/Slave 概念,而是引入了Leader、Follower和Observer 三种角色。Zookeeper 集群中的所有机器通过一个Leader 选举过程来选定一台被称为“leader”的机器,Leader 服务器为客户端提供读写服务。Follower 和Observer 都能提供读服务,唯一的区别在于,Observer 机器不参与Leader 选举过程,也不参与写操作的“过半写成功”策略,因此Observer 可以在不影响写性能的情况下提升集群的读性能。
会话
在Zokeeper 中, 一个客户端连接是指客户端和服务器之间的一个TCP 长连接。客户端启动的时候,首先会先与服务器建立一个TCP 连接,从第一次连接建立开始,客户端会话的生命周期也开始了。通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能向Zookeeper 服务器发送请求并接受响应,同时还能通过该连接接受来自于服务器的Watcher 事件通知。
数据节点Znode
Znode 是Zookeeper 数据模型中的数据单元。Zookeeper 将所有数据存储在内存中,数据模型是一棵树