为什么PW = all和PR =都不能在Riak中提供强一致性?

时间:2014-11-26 23:03:09

标签: database riak consistency

假设我们有一个5机器集群,其中n_val = 3.为什么设置PW = 3和PR = 3进行写入和读取不保证强一致性?

1 个答案:

答案 0 :(得分:1)

使用PW = 3写入密钥会将值写入3个主要vnode。但是,一旦vnode收到要写入的值,即在它被持久化之前,就会返回成功。

在确认该值之后,vnode仍然必须将其提交到适当的后端存储,任何中断此操作的事件都会导致 vnode在下次读取时检索先前的值(或未发现)

使用持久写入选项(DW = 3)将导致vnode延迟确认值,直到将其提交到后端存储。但是,这仍然不是一个保证,因为后端不会确保在写入每个值后刷新缓存。失败仍然可能会中断写入磁盘的值。这是一个比PW = 3更小的窗口,但仍然不能保证。

确定在所有3个主节点上发生这种情况的可能性,使得下一个PR = 3就绪成功但返回错误的值是非常远的,但不是不存在的。

同时写入也可能存在同级值。如果成功写入后第一次成功读取返回一组兄弟值而不是最后写入的值,那么这种强一致性是什么?