我已经找到了关于最终一致性的相当多的资源,他们都谈到了为什么它很重要以及关于Paxos和Byzantine General问题以及类似的东西。我更感兴趣的是了解实际实施或确保长途网络的最终一致性 - 需要做什么,面临的挑战,规避和预防和防范任何事情的可能方法可能会禁止最终的一致性。从您的个人经历到您可能知道的链接的任何内容都非常有用。谢谢!
答案 0 :(得分:1)
最挑战:记住你想要达到的目标。 根据我的经验,ec系统有三个挑战:
任何时间点每个密钥的未知复制级别。为了解决这个问题,采用了各种技术:读取修复,merkle-trees。在长途网络的情况下,这一点可能具有挑战性。
如果有强烈的仲裁要求,您将写入远程数据中心,因此您编写的性能将受到远程数据中心的链路吞吐量的限制。并且在长时间延迟的情况下,它很可能会“丢失写入”:当客户认为,写入没有执行,但实际上是。因此,当您未能写入仲裁时,很容易获得情况,但其他客户端将看到数据,您认为“未写入”
如果您将使用quorum = 1读取数据(以获得更好的读取性能)。但是这里有一些聪明的解决方案,如Probabilistically Bounded Staleness for Practical Partial Quorums