【问题标题】:How does increasing the Cassandra Replication Factor give more consistency增加 Cassandra 复制因子如何提高一致性
【发布时间】:2013-10-11 01:13:26
【问题描述】:

我正在阅读“Cassandra The Definitive Guide”,第 46 页有关于复制因子的内容:

“复制因子本质上允许你决定你 希望支付性能以获得更多的一致性。也就是说,你的 读写数据的一致性级别是基于 复制因子”

现在对我来说这是新闻。如果复制增加,它会提高可用性,并且根据集群的拓扑结构,它的分区容限也很直观。但是为什么作者说它增加了一致性。我会认为它完全相反。您必须付出额外的努力,通过将更新传播到不同节点上的每个副本来确保持久数据的一致状态。所以副本越多,保持一致性就越困难。为什么作者说的完全相反?

感谢所有输入。

【问题讨论】:

  • 帮助读者更容易理解关系(至少这是我的理解)。从上面的引用性能牺牲 => 提高一致性。这意味着增加复制 => 提高一致性,因为只有增加复制才能预期性能牺牲。

标签: cassandra replication consistency


【解决方案1】:

一致性级别指定在返回结果之前必须响应多少副本。请参阅documentation

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

【讨论】:

  • 感谢您的回复,但我正在尝试探索为什么这会提高一致性。我会认为它完全相反?
  • 如果节点数量增加,是不是更难保持一致的状态?
  • 我的意思是,将更新传播到 10 个节点比处理 1 个节点中的数据更成问题。
  • 文档提供了一个很好的示例:“例如,如果您的应用程序对写入和读取操作使用 QUORUM 一致性级别,并且您使用的复制因子为 3,那么这可以确保 2 个节点始终写入,始终读取 2 个节点。写入和读取的节点组合 (4) 大于复制因子 (3) 确保了强读取一致性。”
【解决方案2】:

复制因子描述了您的数据存在多少副本。一致性级别描述了客户端看到的行为。也许有更好的方法来对这些进行分类。

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

例如有 2 个节点,复制因子为 1,读一致性 = 1,写一致性 = 1:

您的读数是一致的 您可以在没有节点丢失的情况下幸存下来。 您每次都是从 1 个节点读取数据。 您实际上每次都在写入 1 个节点。 每个节点保存 50% 的数据。

欲了解更多信息:Configuring data consistency

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 2014-08-26
    • 2015-09-25
    • 2018-07-01
    • 2019-08-10
    • 2018-12-24
    • 2022-11-25
    • 2022-12-13
    相关资源
    最近更新 更多