分布式系统中的数据协作与独立集构建技术解析
1. Delta - State JSON CRDT 技术
1.1 状态集定义
给定一组 JSON 对象集合 C 的副本,其状态集(或简称状态)X 定义为 X = D ∪ O,其中 D 是所有对象的修订树的并集,O 是对象映射。
1.2 Delta - State 分解
一个 δ - CRDT 由三元组 (S, Mδ, Q) 组成,各部分含义如下:
- S:状态的并半格。
- Mδ:增量突变器集合。
- Q:查询函数集合。
状态转换有两种方式:
- 与增量突变合并:X′ = X ⊔ mδ(X)。
- 与接收到的增量组合并:X′ = X ⊔ D。
增量突变器是一种函数,以状态 X 为参数,返回增量突变 mδ(X)。增量组可以是增量突变或多个增量组的合并。更新集 U = X′ \ X 与增量突变等价,且更新集也可转换为增量组。由于合并操作具有结合性、交换性和幂等性,满足收敛要求。
1.3 Delta - State 序列化与适配器
更新集被序列化为两种不同的 JSON 结构:
- 增量块:存储修订树更新。
- 数据包:维护每个新对象的实际内容。
这两种结构都是不可变的,可以本地缓存以减少网络开销。为应对数据包未送达副本的情况,重新定义获胜修订为具有最高数值索引且内容可用的修订。适配器用于在不同平台上存储和复制数据,可无缝支持多种存储类型,如主内存、文件系统、数据库、去中心化数据荚或云共享平台。