Apache ZooKeeper是一种面向小对象的高可用数据存储系统。ZooKeeper集群由多个节点组成,它们都将整个数据集保存在内存中。该数据集被称为“始终一致”,这意味着每个节点始终具有相同的数据。
根据文档和博客文章,集群中的每个节点都可以响应读取并接受写入。
- 读取操作总是由本地节点回答,因此无需与集群进行通信。
- 写入操作将转发到指定的“Leader”节点,该节点将写入请求转发给所有节点并等待它们的回复。如果至少有一半的节点回答,则写入操作被视为成功。
问题:为什么对于Leader节点来说只需要等待一半的节点回复?如果某个节点上连接了未接收更新的客户端,则会得到过时的结果(只包含本地值的本地读取)。