背景:我正在尝试实现 Amazon Dynamo 的副本同步,它使用默克尔树来检测副本之间的分歧。
如本文的网络版本中所述,
Dynamo 使用 Merkle 树进行反熵,如下所示:每个节点为其托管的每个键范围(虚拟节点覆盖的键集)维护一个单独的 Merkle 树。这允许节点比较键范围内的键是否是最新的。在该方案中,两个节点交换与它们共同托管的键范围相对应的 Merkle 树的根。随后,使用上述树遍历方案,节点确定它们是否有任何差异并执行适当的同步操作。
我不明白“适当的同步操作”是什么意思。通过使用适当的遍历,假设我们发现两个默克尔树的根节点之间存在差异——我们如何知道哪一个是正确的?我们是否总是根据其逻辑时钟时间戳获取更新较多的那个?