Apache Cassandra 裂脑

Dre*_*son 5 cassandra

首先,如果之前有人问过这个问题,我很抱歉,我在 Google 或 StackExchange 上找不到答案。

是否有可能将 Apache Cassandra 置于脑裂场景中,即网络分区数据服务继续运行存储和访问数据而无需访问完整集群?

如果没有,使用什么技术(文档链接正常)来避免裂脑?

如果是这样,(似乎有关于这种情况的推文)在这种情况下有哪些恢复选项?

Jon*_*dad 6

所以,这真的取决于一些事情。

首先,Cassandra 被设计为具有分区容错性,这意味着它可以在您描述的情况下继续工作。例如,您可能定义了两个数据中心,并且它们之间的网络连接断开。您的查询是否成功返回取决于您查询集群的一致性级别。如果您选择 LOCAL_QUORUM,即使 2 个数据中心无法通信,您也会得到一个结果。这是数据库的预期功能。

集群中的每个节点都维护集群的完整拓扑,因此当网络连接解决时,提示切换将开始,数据中心将解决它们的问题。可能需要运行 nodetool repair 以确保此时所有数据一致。(它不能伤害)

  • 将解决他们的问题意味着如果你在提示窗口内,所有写入的突变将被发送到首先错过它们的机器。如果存在冲突,则最后一次写入获胜(每次写入都带有时间戳)。如果您没有及时解决网络分区问题,则需要再次运行修复,最后一次写入将获胜。不存在可以在网络分区期间可用并保持一致性的数据库。 (3认同)