【问题标题】:Synch delay when writing to Cassandra with two data centers and LOCAL_QUORUM使用两个数据中心和 LOCAL_QUORUM 写入 Cassandra 时的同步延迟
【发布时间】:2020-06-11 18:16:06
【问题描述】:

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

谢谢

【问题讨论】:

    标签: cassandra


    【解决方案1】:

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

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

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

    我希望这会有所帮助。

    【讨论】:

    • 它并不是真正的异步复制——协调节点同时写入所有副本,一致性级别只是定义了我们想要等待多少个答案:docs.datastax.com/en/dse/6.0/dse-arch/datastax_enterprise/…
    • 我缺少的是写入第二个 DC 的时间和内容。刚刚写信给本地 DC 的协调员是在将答案返回给客户之后还是之前完成的?它是被写入的副本之一,并且是异步完成的吗?
    • @Fabio 协调器在获得足够的响应以满足配置的一致性级别后立即将答案返回给客户端。因此,如果您在 LOCAL_ONE 写入,它会一直等待,直到它从 LOCAL 数据中心中的副本获得单个响应,但对所有其他副本的写入仍在进行中。
    • 只是为了澄清一下,根据 Alex Ott 提供的协调员的图片,即使已经发送了对客户端的响应,也会作为同一请求的一部分写入第二个 DC,对吧?
    • 有些动作是同步的,有些是异步的。使用 CL local_quorum 写入远程(从协调器的角度)数据中心应被视为异步,因为远程数据中心中的所有节点都不涉及您的一致性级别,详情请参见:academy.datastax.com/planet-cassandra/…
    猜你喜欢
    • 2016-02-16
    • 2018-06-04
    • 2021-04-12
    • 2021-02-16
    • 2019-02-22
    • 2013-03-30
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多