Replication RAFT:提交条目的条件

Replication RAFT:提交条目的条件,replication,distributed-system,consensus,raft,Replication,Distributed System,Consensus,Raft,我一直在阅读Raft上的几个文档,我得到了关于提交的矛盾信息。我知道只有在大多数服务器中都存储了条目的情况下才能提交,但是,还有其他条件吗?我已经读到,每个服务器中都必须存储当前术语的条目,但其他一些文档对此没有任何说明。有什么帮助吗?从技术上讲,大多数服务器上存储的条目都没有提交。确实,一个条目一旦存储在大多数服务器上(但仅在其当前期限内),领导者就会确定该条目已提交。来自另一个术语的条目可以存储在大多数服务器上,但永远不会提交,事实上,以后会被另一个leader覆盖。图8显示了这一点 这就是

我一直在阅读Raft上的几个文档,我得到了关于提交的矛盾信息。我知道只有在大多数服务器中都存储了条目的情况下才能提交,但是,还有其他条件吗?我已经读到,每个服务器中都必须存储当前术语的条目,但其他一些文档对此没有任何说明。有什么帮助吗?

从技术上讲,大多数服务器上存储的条目都没有提交。确实,一个条目一旦存储在大多数服务器上(但仅在其当前期限内),领导者就会确定该条目已提交。来自另一个术语的条目可以存储在大多数服务器上,但永远不会提交,事实上,以后会被另一个leader覆盖。图8显示了这一点

这就是为什么一个领导者必须保证从其当前任期进入之前,它可以考虑任何额外的条目从先前的条款提交。一旦选出一个领导者,该领导者就有可能将前一项中的条目复制到大多数节点,而无需提交这些条目。如果该领导崩溃,则可以选择另一个具有后续任期条目的领导,并覆盖存储在集群大多数成员上的条目。这就是图8所示,这也是承诺的技术定义是: 领导者当前术语中的一个条目一旦存储在集群的大部分上就被提交,并且一旦领导者术语中的一个条目被提交,领导者日志中先前术语中的所有条目都被隐式提交


这在实践中意味着,当一位领导人当选时,它通常会提交一个“无操作”条目,以强制在其当前任期内提交。在大多数服务器上存储无操作条目之前,leader不会增加其提交索引。

从技术上讲,提交大多数服务器上存储的条目并不正确。确实,一个条目一旦存储在大多数服务器上(但仅在其当前期限内),领导者就会确定该条目已提交。来自另一个术语的条目可以存储在大多数服务器上,但永远不会提交,事实上,以后会被另一个leader覆盖。图8显示了这一点

这就是为什么一个领导者必须保证从其当前任期进入之前,它可以考虑任何额外的条目从先前的条款提交。一旦选出一个领导者,该领导者就有可能将前一项中的条目复制到大多数节点,而无需提交这些条目。如果该领导崩溃,则可以选择另一个具有后续任期条目的领导,并覆盖存储在集群大多数成员上的条目。这就是图8所示,这也是承诺的技术定义是: 领导者当前术语中的一个条目一旦存储在集群的大部分上就被提交,并且一旦领导者术语中的一个条目被提交,领导者日志中先前术语中的所有条目都被隐式提交

这在实践中意味着,当一位领导人当选时,它通常会提交一个“无操作”条目,以强制在其当前任期内提交。在大多数服务器上存储无操作条目之前,leader不会增加其commitIndex