• 哥本
    2019-09-04
    为什么要给每个节点推送给propose 而不是直接 commite 呢?

    作者回复: 我想您说的是PPT第13页。以下是ZooKeeper leader处理一个写请求的过程:

    1. Leader把写请求通过propose消息发给所有的节点。
    2. Leader在收到集群中大部分节点的accept消息之后才可以发送commit消息给所有的节点。

    Leader不可以直接收到用户的写请求就commit。假设我们在图中的3节点集群中加入节点4和节点5形成一个5节点集群。节点2在收到写请求之后立刻给节点1发commit消息,节点1给客户端发写成功消息。如果在节点3、节点4和节点5收到这个commit消息之前发生了如下的网络分区。

        分区A 分区B
    节点1 节点2 | 节点3 节点4 节点4

    分区B中的节点可以新选举一个leader,从而丢失上述的写请求。丢失已经commit的写操作是不可以的。

    关于这一部分的细节,后续的章节会详细说明。


    
     1
  • Douglas
    2019-09-11
    这种跨区域的observer节点,是不是会有较大的网络延迟,这个如何解决呢?

    作者回复: 这个没有太好的办法,我能想到的就是使用更好的网络资源。使用observer已经比使用follower好多了,跨区域消息少了。

    
    
我们在线,来聊聊吧