configurationCassandra在多个数据中心间保持一致

目前,我们在两个数据中心的每一个中运行一个4节点的Cassandra环。 我们希望将它们重build成一个8节点的环。 所有其他的都是平等的,我们真的希望有一致的读取,所以我们目前运行QUORUM读取和写入。 但是,如果我们丢失了一个数据中心,那么由于无法满足ConsistencyLevel,会导致很多或所有的请求失败。 由于我们计划向两个数据中心发送请求,因此切换到LOCAL_QUORUM应该不足以保证一致性。

Cassandra似乎严重缺less仅针对可用节点测量的ConsistencyLevel设置。

在这种情况下,为了在没有可用性故障的情况下获得最大的一致性,以及为了得到它而需要交易什么?

您可以在正常操作中使用QUORUM读取/写入应用程序,然后在发生DC故障的情况下故障切换到LOCAL_QUORUM。 这是你自己必须做的事情,因为Cassandra不会自动执行此操作。 或者,如果DC出现故障,您可以在打开它进行读/写访问之前执行节点工具修复。 很明显,在多DC情况下QUORUM可能意味着你将有延迟问题取决于他们之间的pipe道,但这是一个折衷,你必须权衡。

这根本不可能。 当您的networking被分区(即数据中心之间的链路closures)时,它们会一起回来,您将如何协调在停机期间在每个数据中心内所做的更改? 我要求具体logging在这两个数据中心已经改变。

Cassandra似乎严重缺lessConsistencyLevel设置,只能根据可用节点进行测量。

有一个原因,在分布式系统中,像ConsistencyLevel和quorum这样的东西由pipe理员进行规划,而不是由系统自动决定。 如果他们这样做,那么(再次使用你的例子),你可能有2个相邻的节点分开,这2个节点将决定他们有法定人数,并会变得与其余的节点不一致。