Skip to content

如何理解选举限制中的“除非这个候选人包含了所有已经提交的日志条目” #105

Description

@sadtrain

问题可以拆分成两个子问题。

1.这里的已提交是什么意思?

根据5.3日志复制中的定义:在领导人将创建的日志条目复制到大多数的服务器上的时候,日志条目就会被提交。
我认为在领导人决定提交条目时,一定是接收到了某个follower的true响应之后,自己决定提交,然后把提交指令分发给所有的follower。这个操作并非原子操作。也就是说,即使leader已经提交了,也可能并未将提交请求分发出去。

2.选举的条件问题

如果以1中我的问题为前提,选举条件中的“除非这个候选人包含了所有已经提交的日志条目”,就无法成立了。
因为选举成功要求该节点拥有所有已经提交的日志条目,目的是为了大多数节点中,至少有一个节点拥有刚才提交的条目。
对于我的这个场景,只有上一任leader中的该条目是已提交状态,就无法满足其他节点中至少有一个节点拥有刚才提交的条目。

这里引申出第3个问题

3. 每个条目是否有待提交、已提交状态

其实也是对问题1,2的思考中得到的新问题

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions