Cassandra无法达到一致性水平SERIAL

问题描述:

我最近发现,如果您在Cassandra中使用条件事务,那么它将默认使用这些事务的SERIAL一致性。Cassandra无法达到一致性水平SERIAL

http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0

但我无法弄清楚如何设置我的复制因子和节点数量,使有条件的交易,即使单个节点下取得成功。我想有一个复制因子2.

我试过replication_factor 1和2与5节点群集。我需要更多节点吗?有什么配置在我失踪的地方?下面我的密钥空间配置。我在Cassandra 3.5和3.9上经历过这个。

CREATE KEYSPACE IF NOT EXISTS reptest WITH replication = {'class': 'SimpleStrategy', 'replication_factor':2};

+0

可以尝试使用网络拓扑策略而不是简单的策略? Theres一些问题 –

SERIAL的一致性水平对应于QUORUM当涉及到具有承认操作的节点的数目。使用QUORUM来补偿单个死点的最小复制因子为3(3个节点中至少有2个存活)。

+0

你能解释为什么复制因子3有效,但复制因子2不能?据我所知,他们都需要相同数量的节点作为quorom。 –

+0

如果仲裁需要2个节点,但复制因子只有2个,那么它们都需要处于活动状态。使用复制因子3时,一个节点可能会降到仍然满足2个节点的法定人数。 –

+0

对,但是如果我有一个复制因子为2的3节点集群,Cassandra不应该容忍单个节点的丢失吗? –