ZooKeeper写数据流程
-  初始化连接: - 客户端初始化与 ZooKeeper 集群的连接,连接可以是 TCP 连接或者基于 UDP 的通信。客户端可以连接到集群中的任何一个节点。
 
-  查找 Leader: - 当客户端发送写请求时,如果连接的节点不是 Leader,该节点会返回 Leader 的信息给客户端,并告诉客户端重新连接到 Leader。
 
-  发送写请求给 Leader: - 客户端将写请求发送给 Leader 节点。写请求包含了要写入的数据以及目标节点的路径。
 
-  Leader 接收请求: - Leader 节点接收到客户端的写请求后,将请求放入待处理队列中,开始处理请求。
 
-  数据处理与提交: - Leader 节点在内存中处理写请求,然后将写操作写入其事务日志(transaction log)中。一旦写入事务日志并被大多数节点(包括 Leader 自身)确认接收,写操作就会被提交。
 
-  数据复制: - Leader 节点将写操作广播给其他节点(Followers)。Followers 在接收到写操作后,会执行相同的写操作,并将结果反馈给 Leader。
 
-  确认写入: - 一旦 Leader 收到大多数节点的确认信息,它将向客户端发送写操作成功的响应。此时客户端可以确认数据已经成功写入 ZooKeeper。
 
-  Watcher 通知: - 如果客户端在写入节点时设置了 Watcher,一旦节点的状态发生变化,ZooKeeper 将会通知客户端。
 
-  持久化: - Leader 节点会定期将内存中的数据以及事务日志持久化到磁盘上,以确保数据的持久性和一致性。这样即使节点崩溃,数据也不会丢失。
 
-  完成写操作: - 一旦写操作被持久化到磁盘上,它就被认为是完成的,Leader 将允许其他读写操作继续进行。
 




















