我正在阅读“Cassandra The Definitive Guide”,第46页有关于复制因子的说法:
“复制因素基本上允许您决定要在性能上支付多少以获得更高的一致性。也就是说,读取和写入数据的一致性级别基于复制因子”
现在对我来说是新闻。如果复制增加,它是直观的,它提高了可用性,并取决于集群的拓扑结构的分区容差。但是为什么作者说它增加了一致性。我认为恰恰相反。您必须通过将更新传播到不同节点上的每个副本来花费额外的精力来确保持久数据的一致状态。复制品越多,保持一致性就越困难。为什么作者说完全相反?
所有投入都赞赏。
一致性级别指定在返回结果之前必须响应的副本数。见documentation。
因此,如果您使用的仲裁级别为Quorum或更高级别,则复制因子越高,在返回结果之前需要响应的节点就越多。
复制因子描述了存在多少份数据副本。一致性级别描述客户端看到的行为。也许有更好的方法对这些进行分类。
例如,复制因子为2.编写时,假设有足够的节点,则始终存储两个副本。当一个节点关闭时,该节点的写入被隐藏起来并在它恢复时被写入,除非它足够长,以至于Cassandra决定它已经消失了。
例如,有2个节点,复制因子为1,读取一致性= 1,写入一致性= 1:
您的读取是一致的您可以在没有节点的情况下幸免于难。你每次都是从1节点读取的。你每次都写到1个节点。每个节点保存50%的数据。
欲了解更多信息:Configuring data consistency