首页 > 解决方案 > 使用两个数据中心和 LOCAL_QUORUM 写入 Cassandra 时的同步延迟

问题描述

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

谢谢

标签: cassandra

解决方案


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

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

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

我希望这有帮助。


推荐阅读