我一直在阅读Nathan Marz的'article关于如何用Lambda架构击败CAP定理,并不明白不变数据如何使最终一致性更简单。不可变数据如何使最终一致性变得微不足道?
以下段落从文章采取:
的关键在于数据是不可变的。不可变的数据意味着没有更新这样的事情,所以一块数据的不同副本不可能变得不一致。这意味着没有发散值,矢量时钟或读取修复。从查询的角度来看,一段数据存在或不存在。数据上只有数据和功能。你不需要做任何事情来强化最终的一致性,最终的一致性不会妨碍系统的推理。
想象一下下面的例子:我有一个分布式插入数据库,它有两个节点A和B,两者都保存记录[timestamp=1; id=1; value=10]
。然后与此同时,针对节点A的插入导致[timestamp=2; id=1; value=20]
以及针对节点B的读取以用于记录id=1
。
与具有更新可能性的数据库相比,如何解决与该示例相比最终一致性问题更简单的问题?