Cassandra 2.0 documentation包含以下有关原子性的段落:
例如,如果使用复制因子为3的写入一致性级别QUORUM,Cassandra会将写入复制到群集中的所有节点,并等待来自两个节点的确认。如果在其中一个节点上写入失败但在另一个节点上成功,则Cassandra报告无法复制该节点上的写入。但是,在另一个节点上成功的复制写入不会自动回滚。
因此,写请求被发送到3个节点,我们等待2个ACK。假设我们只收到1个ACK(超时前)。所以很清楚,如果我们以一致性读取,我们可以读取该值,好的。
但以下哪一项陈述也属实:
答案 0 :(得分:0)
我相信你正在混合原子性和一致性。在节点之间不保证原子性,而一致性是。在最真实的原子性意义上,只写入单个节点中的单个行是原子的。
Cassandra唯一一次写入失败的原因是,当协调员收到请求时,只有很少的副本存在,即它不能满足一致性级别。否则你的第二个陈述是正确的。它将暗示失败的节点(副本)将需要复制此行。
本文介绍了不同的故障情况。 http://www.datastax.com/dev/blog/how-cassandra-deals-with-replica-failure