【问题标题】:Why some people say Riak is eventual consistent [closed]为什么有些人说Riak最终是一致的[关闭]
【发布时间】:2013-01-03 14:00:25
【问题描述】:

默认情况下,Riak 中的数据桶被复制到 3 个不同的节点 (N=3)。此外,在读取或写入请求被视为成功之前必须响应的副本数是 2 个节点(R=2,W=2)。

我们知道当 N 小于或等于 R+W 时,Riak 提供了强一致性。所以通过这些默认值,Riak 提供了强一致性(如 MySQL)。我无法理解为什么有些人说 Riak 不是强一致性,它提供了最终一致性?

【问题讨论】:

标签: riak eventual-consistency


【解决方案1】:

R 和 W 值(连同 PW(主要写入)、PR(主要写入)和 DW(持久写入))允许您根据应用程序的要求调整一致性。尽管这可以保证正常操作期间的一致性,但 Riak 仍然是最终一致的,因为它如何处理失败场景,例如网络分区。

如果我们假设我们有一个由 5 个节点组成的集群,其中 N 设置为 3,并且 2 个节点与其余节点分区一段时间,所有节点仍然能够根据前面提到的参数接受读取和写入.如果我们进一步假设 PR 和 PW 设置为 0,则可以在分区就位时更新分区两侧的记录。这可能会导致在集群连接恢复之前无法解决的不一致问题,从而使系统最终保持一致。

PR 和 PW 允许用户指定必须存在一定数量的主分区所有者才能使读/写成功,如果这些设置为值 > 0,则可能是分区在网络分区持续期间,集群可能不允许对所有节点上的所有对象进行读/写。

【讨论】:

    【解决方案2】:

    对于 Riak 和类似系统所提供的更好的术语可能是可调一致性,因为它们提供了在一致性、可用性和分区容错性之间做出权衡决策的能力。相比之下,MySQL 和其他 RDBMS 系统竭尽全力保证一致性。这是一项昂贵的保证,并不总是物有所值。

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多