【发布时间】:2017-01-24 07:25:34
【问题描述】:
这个问题参考https://zookeeper.apache.org/doc/trunk/zookeeperObservers.html
观察者是合奏中没有投票权的成员,他们只听到 投票的结果,而不是导致投票的协议协议。 除了这个简单的区别之外,观察者的功能与 与追随者相同 - 客户端可以连接到他们并发送读取和 向他们写请求。观察者将这些请求转发给领导者 像追随者一样,但他们只是等待听到结果 投票。因此,我们可以尽可能多地增加观察者的数量 在不影响投票表现的情况下随心所欲。
观察者还有其他优势。因为他们不投票,所以他们是 不是 ZooKeeper 集成的关键部分。因此他们可以 失败或与集群断开连接,而不会损害 ZooKeeper 服务的可用性。对用户的好处是 观察者可能通过比追随者更不可靠的网络链接进行连接。 事实上,Observers 可以用来与 ZooKeeper 服务器从 另一个数据中心。 Observer 的客户端将看到快速读取,因为 所有读取都在本地提供,写入导致最小的网络 流量作为在没有投票时所需的消息数量 协议更小。
1) 乐团的无投票权成员 - 有投票权的成员对什么进行投票?
2) 更新请求如何为观察者工作 - 当 ZK 领导者收到更新请求时,它需要一定数量的节点来响应。观察者节点似乎不被视为仲裁节点。这是否意味着观察者节点落后于领导者节点的更新?如果这是真的,它如何确保观察者节点在读取期间不会响应陈旧数据?
3) Observer 的客户端将看到快速读取,因为所有读取都在本地提供,并且写入导致网络流量最小,因为在没有投票协议的情况下所需的消息数量更少 - 来自所有其他节点的读取也将是本地的,只是因为它们与领导者同步,不是吗?而且我没有得到关于写入的部分。
这些问题应该有助于理解 Zookeeper 和分布式系统。感谢这些的详细解答。提前致谢!
【问题讨论】:
标签: apache-zookeeper distributed-computing