使用两个数据中心和 LOCAL_QUORUM 写入 Cassandra 时的同步延迟

Synch delay when writing to Cassandra with two data centers and LOCAL_QUORUM

这个问题的动机是从这个伟大的帖子中学习。我终于从 Cassandra 的最终一致性中了解了它们的含义。 Andrew Weaver 非常清楚地解释了提交日志会发生什么。现在我想知道当你有两个数据中心并且你使用 LOCAL_QUORUM 的一致性时会发生什么。这是场景:我刚刚完成对数据中心一的写入,提交日志被刷新/同步到磁盘,另外两个副本也被同步。何时写入第二个数据中心?
我想其中一个实例会启动同步过程,但会有延迟。这是什么延迟?此外,如果数据中心 1 在同步之前出现故障,则数据中心 2 将无法使用。但是如果在数据中心二的数据中写入同一行会发生什么。行如何调和?
如果数据中心一号在同步过程的中间出现同样的问题?数据何时会保持一致?是否有任何陷阱?

谢谢


您必须认为,在您的情况下,复制到第二个数据中心是以异步方式完成的。延迟通常以毫秒为单位。
如果一个数据中心出现故障,那么您将同一行写入第二个数据中心,它就像两次不同的写入,因此不同的时间戳和最后一次写入将获胜(当然,在不同数据的情况下)。协调将在修复期间发生,或读取修复,或者如果您将以一致性级别 ALL 读取。

这是 Ryan Svihla 的一篇非常好的文章,用不同的案例解释了 subjet:

https://medium.com/@foundev/cassandra-how-many-nodes-are-talked-to-with-quorum-also-should-i-use-it-98074e75d7d5

我希望这会有所帮助。