Skip to content

无冲突复制数据类型

Conflict-free replicated data type · CRDT

通过单调状态合并或可交换操作在无协调下保证副本收敛的数据类型。

形式陈述

无冲突复制数据类型(CRDT)是带有合并规则的复制抽象数据类型,使副本可在无同步协调下本地更新,并在满足传递假设后达到强最终一致性。状态型 CRDT 通常令状态构成 join-semilattice,更新单调膨胀,合并取 join;操作型 CRDT 则传播 effectors,并要求并发操作以任意顺序执行都交换,同时依赖规定的可靠、去重或因果传递条件。两类设计都需证明每个允许执行最终收敛到等价状态。

直觉

把冲突解决嵌入数据类型代数中:并发更新不是交给人工事后仲裁,而是按满足结合、交换、幂等这类性质的规则自动合并。

例子与边界

Grow-only Set 以集合并集作为 merge,天然结合、交换、幂等;两个副本各自加入元素后交换状态即可收敛。普通“最后写入覆盖”寄存器需可靠的确定性时间戳排序,并不因名字叫 CRDT 就解决时钟语义。删除集合元素比只增复杂,常需 tombstone、因果上下文或 observed-remove 规则。CRDT 保证副本收敛,不自动保持余额非负等跨对象业务不变量。

推论与应用

CRDT 支持离线编辑、协作软件、地理复制数据库和边缘系统。选择状态型或操作型时需权衡元数据、消息大小、传递保证和垃圾回收。

参考资料
  • Marc Shapiro et al., “Conflict-Free Replicated Data Types,” SSS 2011,Full paper, convergent/commutative replicated data types and strong eventual consistency。
  • Werner Vogels, “Eventually Consistent,” Communications of the ACM 52(1), 2009, pp. 40–44,Full paper, eventual consistency context and replicated updates。