Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何增加Cassandra复制因子来提高一致性_Cassandra_Replication_Consistency - Fatal编程技术网

如何增加Cassandra复制因子来提高一致性

如何增加Cassandra复制因子来提高一致性,cassandra,replication,consistency,Cassandra,Replication,Consistency,我在读《卡桑德拉权威指南》,第46页提到了复制因子: “复制因素本质上允许您决定您需要多少 希望按性能付费以获得更高的一致性。也就是说,您的 读写数据的一致性级别基于 复制因子“ 现在对我来说这是新闻。如果增加复制,直观地说,它会提高可用性,并根据集群的拓扑结构提高分区容差。然而,作者为什么说它增加了一致性。我认为恰恰相反。通过向不同节点上的每个副本传播更新,您必须付出额外的努力来确保持久数据的状态一致。因此,复制副本越多,维护一致性就越困难。为什么作者说的恰恰相反 所有输入都会得到赞赏。一致性

我在读《卡桑德拉权威指南》,第46页提到了复制因子:

“复制因素本质上允许您决定您需要多少 希望按性能付费以获得更高的一致性。也就是说,您的 读写数据的一致性级别基于 复制因子“

现在对我来说这是新闻。如果增加复制,直观地说,它会提高可用性,并根据集群的拓扑结构提高分区容差。然而,作者为什么说它增加了一致性。我认为恰恰相反。通过向不同节点上的每个副本传播更新,您必须付出额外的努力来确保持久数据的状态一致。因此,复制副本越多,维护一致性就越困难。为什么作者说的恰恰相反


所有输入都会得到赞赏。

一致性级别指定返回结果之前必须响应的副本数量。看


因此,如果您使用的一致性级别为Quorum或更高,则复制因子越高,在返回结果之前需要响应的节点就越多。

复制因子描述了数据存在的拷贝数。一致性级别描述客户端看到的行为。也许有更好的分类方法

例如,复制因子可以为2。当您写入时,将始终存储两个副本,前提是有足够的节点。当一个节点关闭时,对该节点的写操作会被隐藏起来,并在它恢复时写入,除非它关闭的时间足够长,以至于Cassandra认为它永远消失了

例如,对于2个节点,复制因子为1,读取一致性为1,写入一致性为1:

你的读数是一致的 您可以在没有节点的情况下生存。 您每次都在读取1个节点的数据。 您实际上每次都在向1个节点写入数据。 每个节点拥有50%的数据


欲了解更多信息:

帮助读者更容易地理解这种关系(至少这是我的理解)。从上面的报价来看,性能牺牲=>改进的一致性。这意味着增加了复制=>提高了一致性,因为只有增加了复制才能带来性能损失。感谢您的响应,但我正在尝试探索为什么这会提高一致性。我认为恰恰相反?如果节点数量增加,是否更难保持一致状态?例如,我的意思是,将更新传播到10个节点比处理1个节点中的数据更困难。文档提供了一个很好的示例:“例如,如果您的应用程序在写入和读取操作中都使用仲裁一致性级别,并且您使用的复制系数为3,则这将确保始终写入2个节点,始终读取2个节点。写入和读取的节点组合(4)大于复制因子(3),确保了强大的读取一致性。”