为什么有些人说Riak最终是一致的

时间:2013-01-03 14:00:26

标签: riak eventual-consistency

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

我们知道当N小或等于R + W时,Riak提供了强一致性。因此,通过这些默认值,Riak提供了强大的一致性(如MySQL)。我不能感到不安,为什么有些人告诉Riak不是很强的一致性,它提供了最终的一致性?

2 个答案:

答案 0 :(得分:2)

R和W值(与PW(主写入),PR(主写入)和DW(持久写入)一起)允许您根据应用程序的要求调整一致性。尽管这可以保证在正常操作期间的一致性,但由于Riak如何处理故障情况,例如网络分区。

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

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

答案 1 :(得分:1)

Riak和类似系统提供的更好的术语可能是可调一致性,因为它们能够决定一致性,可用性和分区容差之间的权衡。相比之下,MySQL和其他RDBMS系统不遗余力地保证保证一致性。这是一个昂贵的保证,并不总是值得花费。

相关问题