问题可以拆分成两个子问题。
1.这里的已提交是什么意思?
根据5.3日志复制中的定义:在领导人将创建的日志条目复制到大多数的服务器上的时候,日志条目就会被提交。
我认为在领导人决定提交条目时,一定是接收到了某个follower的true响应之后,自己决定提交,然后把提交指令分发给所有的follower。这个操作并非原子操作。也就是说,即使leader已经提交了,也可能并未将提交请求分发出去。
2.选举的条件问题
如果以1中我的问题为前提,选举条件中的“除非这个候选人包含了所有已经提交的日志条目”,就无法成立了。
因为选举成功要求该节点拥有所有已经提交的日志条目,目的是为了大多数节点中,至少有一个节点拥有刚才提交的条目。
对于我的这个场景,只有上一任leader中的该条目是已提交状态,就无法满足其他节点中至少有一个节点拥有刚才提交的条目。
这里引申出第3个问题
3. 每个条目是否有待提交、已提交状态
其实也是对问题1,2的思考中得到的新问题
问题可以拆分成两个子问题。
1.这里的已提交是什么意思?
根据5.3日志复制中的定义:在领导人将创建的日志条目复制到大多数的服务器上的时候,日志条目就会被提交。
我认为在领导人决定提交条目时,一定是接收到了某个follower的true响应之后,自己决定提交,然后把提交指令分发给所有的follower。这个操作并非原子操作。也就是说,即使leader已经提交了,也可能并未将提交请求分发出去。
2.选举的条件问题
如果以1中我的问题为前提,选举条件中的“除非这个候选人包含了所有已经提交的日志条目”,就无法成立了。
因为选举成功要求该节点拥有所有已经提交的日志条目,目的是为了大多数节点中,至少有一个节点拥有刚才提交的条目。
对于我的这个场景,只有上一任leader中的该条目是已提交状态,就无法满足其他节点中至少有一个节点拥有刚才提交的条目。
这里引申出第3个问题
3. 每个条目是否有待提交、已提交状态
其实也是对问题1,2的思考中得到的新问题