zookeeper
-
zookeeper 是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接收观察者的注册。一旦数据的状态发生变化,zookeeper 就会通知那些已经注册的观察者,以便它们能够及时做出反应。
-
zookeeper 是 CP 模型,在一致性和可用性之间选择了一致性。Leader 只有将新数据同步给所有的 Follower 之后,整个 zookeeper 集群才能对外提供服务,否则客户端就有可能读到旧数据。zookeeper 保存的数据量很小,因此同步速度非常快。
-
应用场景:
- 统一配置管理:可将配置信息写入 zookeeper 的一个 ZNode,各个客户端监听这个 ZNode。一旦 ZNode 中的数据被修改,zookeeper 将通知各个客户端。
- 统一集群管理:通过将节点信息写入 zookeeper 的一个 ZNode,监听这个 ZNode 便可获取它的实时状态变化。
- 服务器节点动态上下线、软负载均衡等等。
-
数据写入
只要有一半的 Follower 写完,就会告知客户端。还是半数机制,就是为了快速响应。
再来看另一种情况,如果客户端访问的节点是追随者,由于追随者没有写权限,那么会先将写请求转发给领导者,然后接下来的步骤和上面类似。
当 Leader 发现有半数的 Follower 写完,就认为写数据成功,于是返回 ack。但这个 ack 不会返回给客户端,因为客户端访问的不是领导者,最终领导者会将 ack 返回给客户端访问的追随者,再由这个追随者将 ack 返回给客户端,告知写请求已执行完毕。

浙公网安备 33010602011771号