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



这个问题的动机是跟随这篇伟大的文章。我终于从《卡桑德拉》的最终一致性中得到了一些关于它们含义的澄清。Andrew Weaver非常清楚地解释了提交日志的情况。现在,我想了解当您有两个数据中心并且使用LOCAL_QUORUM的一致性时会发生什么。这是一个场景:我刚刚完成对数据中心一的写入,提交日志被刷新/同步到磁盘,另外两个副本也被同步。何时向第二个数据中心进行写入?我想其中一个实例会启动同步过程,但会有延迟。延迟了什么?此外,如果数据一个中心在同步前发生故障,它将无法在数据二个中心使用。但是,如果同一行被写入第二数据中心的数据,会发生什么呢。这一行是如何调和的?如果数据中心一号在同步过程中失败,也会有同样的问题?数据什么时候是一致的,如果有任何问题?

感谢

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

这是Ryan Svihla的一篇非常好的文章,解释了不同情况下的子射流:

https://medium.com/@foundev/cassandra-how-many-nodes-re-talked-to-with-quorum-all-should-i-use-it-9804e75d7d5

我希望这能有所帮助。

最新更新