Quorum中的RAFT一致性算法如何确保确定性链扩展?

时间:2018-05-10 10:46:49

标签: blockchain consensus raft quorum

在Quorum的RAFT consensus docs中,提到了

  

这种链扩展逻辑是确定性的:相同的确切行为   将在群集中的每个节点上发生,保留区块链   同步。

如果正在进行领导者变更,共识算法如何确保所有关注者节点具有相同的分类帐?是否有可能某些关注节点首先从前一个领导者获得一个新块,一些节点首先从新领导者那里获得一个新块?是否有任何同步机制来避免这种行为?

1 个答案:

答案 0 :(得分:1)

在领导层变更期间,关注者节点可能会从前任领导者那里获得阻止;但是他们不会使用它,直到新领导人承诺这个障碍可能不会发生。

筏复制分两个阶段进行:准备阶段和提交阶段。两者都通过Append消息发生,该消息具有committed水印。

新木筏领导者首先修复了追随者的日志。也就是说,它会覆盖日志的未提交部分,使其与自己的部分匹配,然后提交它们。

一旦块的转换数低于节点的承诺水印,它就可以用于业务;在此之前,节点必须假定该块可能不正确并且可以删除。

我强烈建议您使用https://raft.github.io/上的可视化效果:

  1. 关闭大多数节点,但保持领导者和另一个节点处于活动状态;
  2. 向领导者索取价值;
  3. 关闭领导者,打开其他节点;
  4. 超时您刚刚重新激活的其中一个节点(不是具有您请求的值的节点。)
  5. 看看会发生什么。