【发布时间】:2017-10-21 07:58:09
【问题描述】:
我一直在阅读 Nathan Marz 的 article,了解如何使用 Lambda 架构克服 CAP 定理,但我不明白不可变数据如何降低最终一致性的复杂性。
以下段落摘自文章:
关键是数据是不可变的。不可变数据意味着没有更新之类的东西,因此一条数据的不同副本不可能变得不一致。这意味着没有分歧值、矢量时钟或读取修复。从查询的角度来看,一条数据要么存在,要么不存在。该数据上只有数据和功能。您无需执行任何操作来强制执行最终一致性,并且最终一致性不会妨碍对系统的推理。
想象以下示例:我有一个分布式只插入数据库,其中包含两个节点 A 和 B,并且都保存记录 [timestamp=1; id=1; value=10]。然后同时,对节点 A 进行插入,导致 [timestamp=2; id=1; value=20] 和对节点 B 的读取以获取 id=1 的记录。
与具有更新可能性的数据库相比,该示例解决最终一致性问题的复杂性如何?
【问题讨论】:
标签: immutability distributed-system eventual-consistency cap-theorem lambda-architecture