假设我们有一个n_val = 3的5机器集群,为什么为写和读设置PW=3和PR=3不能保证很强的一致性?
发布于 2014-11-29 05:03:33
使用PW=3编写密钥时,将该值写入3个主vnodes。但是,一旦vnode接收到要写入的值,即在持久化之前,成功就会返回。
确认值后,vnode仍必须将其提交到适当的后端存储区,任何中断此值的事件都会导致该vnode在下一次读取时检索前一个值(或notfound)。
使用持久性写入选项(DW=3)将导致vnode延迟对值的确认,直到将其提交到后端存储之后。但是,这仍然不能完全保证,因为后端不能确保在写入每个值之后缓存被刷新。失败仍然可能中断写入磁盘的值。这显然是一个比PW=3小得多的窗口,但仍然不能保证。
假设在所有3个主节点上发生这种情况的可能性,例如下一个PR=3就绪成功但返回错误的值是非常遥远的,但不是不存在的。
同时写入也有可能产生同级值。如果成功写入后的第一个成功读取返回一组兄弟值,而不是最后一个写入值,这是强一致性吗?
https://stackoverflow.com/questions/27160377
复制相似问题