Apache ZooKeeper 是一种用于小对象的高可用数据存储。ZooKeeper 集群由一些节点组成,这些节点都将整个数据集保存在它们的内存中。该数据集被称为“始终一致”,因此每个节点每次都有相同的数据。
根据文档和博客文章,集群中的每个节点都可以回答读取并接受写入。
- 读取总是由节点在本地回答,因此不涉及与集群的通信。
- 写入被转发到指定的“Leader”节点,该节点将写入请求转发给所有节点并等待它们的回复。如果至少有一半的节点回答,则认为写入成功。
问题:为什么leader等待一半的节点回复就够了?如果有人连接到没有收到更新的节点之一,他会得到一个过时的结果(仅本地读取到本地值)。