是否有可能将 Apache Cassandra 置于裂脑场景中,其中网络分区数据服务继续运行存储和访问数据,而无需访问整个集群?
如果不是,那么使用了哪些技术(链接到文档 OK)来避免裂脑?
如果是这样,(似乎有关于此事的推文)这种情况下有哪些恢复选项?
答案1
所以,这确实取决于一些因素。
首先,Cassandra 的设计具有分区容忍性,这意味着它可以在您描述的情况下继续工作。例如,您可能定义了两个数据中心,并且它们之间的网络连接断开。您的查询是否成功返回取决于您查询集群的一致性级别。如果您选择 LOCAL_QUORUM,即使两个数据中心无法通信,您也会得到结果。这是数据库的预期功能。
集群中的每个节点都维护集群的完整拓扑,因此当网络连接解决后,提示切换将启动,数据中心将解决其问题。此时可能需要运行 nodetool repair 以确保所有数据一致。(这不会造成伤害)