raft游戏下载 raft( 十 )


5.4.3 安全性论证在给定了了完整的 Raft 算法之后,我们现在可以更更加精确的讨论领导?人完整性特性(这?一讨论基于 9.2 节的安全性证明) 。我们假设领导?人完全性特性是不不存在的,然后我们推出?矛盾来 。假设任期 T 的领导?人(领导?人 T)在任期内提交了了?一条?日志条?目,但是这条?日志条?目没有被存储到未来某个任期的领导?人的?日志中 。设?大于 T 的最?小任期 U 的领导?人 U 没有这条?日志条?目 。
图 9:如果 S1 (任期 T 的领导者)提交了了?一条新的?日志在它的任期?里里,然后 S5 在之后的任期 U ?里里被选举为领导?人,然后?至少会有?一个机器器,如 S3,既拥有来?自 S1 的?日志,也给 S5 投票了了 。1. 在领导?人 U 选举的时候?一定没有那条被提交的?日志条?目(领导?人从不不会删除或者覆盖任何条?目) 。
2. 领导?人 T 复制这条?日志条?目给集群中的?大多数节点,同时,领导?人U 从集群中的?大多数节点赢得了了选票 。因此,?至少有?一个节点(投票者、选?民)同时接受了了来?自领导?人T 的?日志条?目,并且给领导?人U 投票了了,如图 9 。这个投票者是产?生这个?矛盾的关键 。
3. 这个投票者必须在给领导?人 U 投票之前先接受了了从领导?人 T 发来的已经被提交的?日志条?目;否则他就会拒绝来?自领导?人 T 的附加?日志请求(因为此时他的任期号会?比 T ?大) 。
4. 投票者在给领导?人 U 投票时依然保存有这条?日志条?目,因为任何中间的领导?人都包含该?日志条?目(根据上述的假设),领导?人从不不会删除条?目,并且跟随者只有在和领导?人冲突的时候才会删除条?目 。
5. 投票者把?自?己选票投给领导?人 U 时,领导?人 U 的?日志必须和投票者?自?己?一样新 。这就导致了了两者?矛盾之?一 。
6. ?首先,如果投票者和领导?人 U 的最后?一条?日志的任期号相同,那么领导?人 U 的?日志?至少和投票者?一样?长,所以领导?人 U 的?日志?一定包含所有投票者的?日志 。这是另?一处?矛盾,因为投票者包含了了那条已经被提交的?日志条?目,但是在上述的假设?里里,领导?人 U 是不不包含的 。
7. 除此之外,领导?人 U 的最后?一条?日志的任期号就必须?比投票?人?大了了 。此外,他也?比 T ?大,因为投票?人的最后?一条?日志的任期号?至少和 T ?一样?大
(他包含了了来?自任期 T 的已提交的?日志) 。创建了了领导?人 U 最后?一条?日志的之前领导?人?一定已经包含了了那条被提交的?日志(根据上述假设,领导?人 U 是第?一个不不包含该?日志条?目的领导?人) 。所以,根据?日志匹配特性,领导?人 U ?一定也包含那条被提交的?日志,这?里里产?生?矛盾 。
8. 这?里里完成了了?矛盾 。因此,所有?比 T ?大的领导?人?一定包含了了所有来?自 T 的已经被提交的?日志 。
9. ?日志匹配原则保证了了未来的领导?人也同时会包含被间接提交的条?目,例例如图 8 (d) 中的索引 2 。
通过领导?人完全特性,我们就能证明图 3 中的状态机安全特性,即如果服务器器已经在某个给定的索引值应?用了了?日志条?目到?自?己的状态机?里里,那么其他的服务器器不不会应?用?一个不不?一样的?日志到同?一个索引值上 。在?一个服务器器应?用?一条?日志条?目到他?自?己的状态机中时,他的?日志必须和领导?人的?日志,在该条?目和之前的条?目上相同,并且已经被提交 。现在我们来考虑在任何?一个服务器器应?用?一个指定索引位置的?日志的最?小任期;?日志完全特性保证拥有更更?高任期号的领导?人会存储相同的?日志条?目,所以之后的任期?里里应?用某个索引位置的?日志条?目也会是相同的值 。因此,状态机安全特性是成?立的 。最后,Raft 要求服务器器按照?日志中索引位置顺序应?用?日志条?目 。和状态机安全特性结合起来看,这就意味着所有的服务器器会应?用相同的?日志序列列集到?自?己的状态机中,并且是按照相同的顺序 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。