配置 Cassandra 以实现跨多个数据中心的一致性

zst*_*art 7 cassandra

目前,我们在两个数据中心的每一个中运行一个 4 节点的 Cassandra 环。我们想将它们重建成一个单一的 8 节点环。在其他条件相同的情况下,我们真的希望读取一致,因此我们目前运行 QUORUM 读取和写入。但是,如果我们丢失了一个数据中心,这似乎会导致许多或所有请求由于无法满足 ConsistencyLevel 的要求而失败。由于我们计划向两个数据中心发送请求,因此切换到 LOCAL_QUORUM 不足以保证一致性。

Cassandra 似乎非常缺少仅针对可用节点进行测量的 ConsistencyLevel 设置。

在这种情况下,如何在没有可用性故障的情况下获得最大的一致性,以及必须权衡什么才能获得它?

小智 1

您可以在正常操作中使用 QUORUM 让您的应用程序读/写,然后在发生 DC 故障时故障转移到 LOCAL_QUORUM。这是您必须自己完成的事情,因为 Cassandra 不会自动执行此操作。或者,如果 DC 出现故障,您可以在打开它进行读/写访问之前执行节点工具修复。显然,多 DC 场景中的 QUORUM 可能意味着您将遇到延迟问题,具体取决于它们之间的管道,但这是您必须权衡的权衡。