初识ZooKeeper

什么是ZooKeeper?

ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。

ZooKeeper提供哪些服务?

1.命名服务-按名称标识集群中的节点。它类似于DNS,但仅对于节点。

2.配置管理 - 加入节点的最近的和最新的系统配置信息。

3.集群管理 - 实时地在集群和节点状态中加入/离开节点。

4.选举算法 - 选举一个节点作为协调目的的leader。

5.锁定和同步服务 - 在修改数据的同时锁定数据。此机制可帮助你在连接其他分布式应用程序(如Apache HBase)时进行自动故障恢复。

6.高度可靠的数据注册表 - 即使在一个或几个节点关闭时也可以获得数据。

使用ZooKeeper有哪些好处?

1.简单的分布式协调过程

2.同步 - 服务器进程之间的相互排斥和协作。此过程有助于Apache HBase进行配置管理。

3.有序的消息

4.序列化 - 根据特定规则对数据进行编码。确保应用程序运行一致。这种方法可以在MapReduce中用来协调队列以执行运行的线程。

5.可靠性

6.原子性 - 数据转移完全成功或完全失败,但没有事务是部分的。

ZooKeeper架构

ZooKeeper采用B/S架构,架构图如下:
初识ZooKeeper

ZooKeeper架构

Sessions

会话对于ZooKeeper的操作非常重要。会话中的请求按FIFO顺序执行。一旦客户端连接到服务器,将建立会话并向客户端分配会话ID 。

客户端以特定的时间间隔发送心跳以保持会话有效。如果ZooKeeper集合在超过服务器开启时指定的期间(会话超时)都没有从客户端接收到心跳,则它会判定客户端死机。

会话超时通常以毫秒为单位。当会话由于任何原因结束时,在该会话期间创建的临时节点也会被删除。

Watches

监视是一种简单的机制,使客户端收到关于ZooKeeper集合中的更改的通知。客户端可以在读取特定znode时设置Watches。ZooKeeper节点称为 znode,Watches会向注册的客户端发送任何znode(客户端注册表)更改的通知。

znode更改是与znode相关的数据的修改或znode的子项中的更改。只触发一次watches。如果客户端想要再次通知,则必须通过另一个读取操作来完成。当连接会话过期时,客户端将与服务器断开连接,相关的watches也将被删除。

参考资料

https://www.w3cschool.cn/zookeeper/zookeeper_overview.html