我查阅了很多有关最终一致性的资源,他们都谈到了为什么它如此重要以及Paxos和Byzantine General问题以及诸如此类的问题。我更感兴趣的是了解在远程网络上实际实现或确保最终一致性的知识-需要做的事情,面临的挑战,规避和预防和防范可能阻止最终一致性的任何可能方法。从您的个人经验到您可能知道的链接,任何事情都将非常有用。谢谢!

最佳答案

最大的挑战:记住要实现的目标。
以我的经验,ec系统面临三个挑战:

  • 任何时间点每个密钥的未知复制级别。为了解决这个问题,采用了各种技术:读取修复,merkle树。在长途网络的情况下,这一点可能具有挑战性。
  • 如果对仲裁的要求很高,则将写入到远程数据中心,因此,写入性能将受到到远程数据中心的链接吞吐量的限制。而且在长时间延迟的情况下,很可能发生“丢失的写入”:当客户认为时,该写入未执行,但实际上是。因此,当您无法写入仲裁但其他客户端将看到您认为未写入的数据时,很容易得到这种情况
  • 如果您将以quorum = 1读取(为了更好的读取性能),则为数据专用性。但是这里存在一些像Probabilistically Bounded Staleness for PracticalPartial Quorums这样的聪明解决方案
  • 08-07 23:16