分布式系统中的位置独立性与不可变运行时
1. 数据合并与一致性
在分布式系统中,数据的修改可能存在部分顺序。当图中的两个叶子节点不存在因果关系时,我们需要合并这两组属性展示给用户。此前基于拼接的合并方式会产生包含两个名称和两个电话号码的联系人信息。但借助图结构,我们能找到两个叶子节点的最近共同祖先。通过比较左分支与最近共同祖先,发现本地用户仅修改了名称;比较右分支可知,远程用户仅修改了电话号码。因此,我们可以进行更合理的合并,展示最新的名称和电话号码,如:
name: “Robert”
phone: “867-5309”
这种三方合并仅在展示时进行,历史记录集(或图)不会被修改。所有节点以相同方式进行三方合并,因为它们拥有相同的图,所以会计算出相同的结果。即使历史记录包含无因果关系的记录,也不会产生冲突,所有节点最终会收敛到相同的值。
2. 无冲突复制数据类型(CRDTs)的约束
CRDTs 的要求足以证明强最终一致性。我们构建的数据结构确保所有更新交换后,每个节点都会收敛到相同的状态,节点无需额外通信即可达成共识。为维护强最终一致性,我们必须接受两个约束:
- 无法保证单一后继 :对于任何给定事实,不能保证只有一个后继。合并操作不允许这样做,排除其他后继需要投票,系统需要中央权威、选举出的主节点、共识算法或工作量证明来维持这一保证,这并非无冲突复制数据类型的规则所产生的。
- 不能基于及时性解释历史 :一些节点会比其他节点更早得知更新。例如,节点可能尝试通
分布式系统:位置独立性与不可变运行时
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



