Cassandra 节点在网络断开时单独工作

Cassandra nodes working alone when network is disconnected

我在设计 cassandra 集群时必须面对一个复杂的要求,我不知道这是否可能。 我的客户想要一个冗余的 cassandra 集群,但面临的问题之一是有时节点会因某些网络问题而变得独立。

有这张图更容易解释。想象一下网络出现故障......我仍然想像独立服务器一样将数据从数据发射器 2 保存到 cassandra 节点 2(它们在同一台计算机上)。有任何选项仅在 cassandra 节点 2 中保存某些特定表(由数据 emisor2 创建的表)。

之所以出现这种疯狂的架构,是因为一切都处于一个所有机器都可以独立工作的工业环境中。

您可以使用 NetworkTopologyStrategy 构建多数据中心集群,其中每个数据发射器都会将数据写入本地数据中心节点。您的发射器将不得不通过驱动程序配置仅将数据写入特定数据中心。一致性级别将需要为 LOCAL_ONELOCAL_QUORUM,换句话说,它们应该只从本地 DC 寻求响应,并让复制将数据分发到其余 DC。这将确保如果本地 DC/emitter 没有连接到集群的其余部分,写入仍然通过,并且当网络连接恢复时,所有数据都被复制到其余的 DC,很可能通过手动修复作业。

在退化的情况下,这些数据中心中的每一个都可以由一个节点组成。当然,对于单节点数据中心,每个数据中心的复制因子都是 1,这总是很危险,如果单个节点死机,可能会导致数据丢失。