宝典目录
- CRDT宝典(一): 引言
- CRDT宝典(二): 基本概念
- CRDT宝典(三): GCounter
- CRDT宝典(四): PNCounter
- CRDT宝典(五): GSet
- CRDT宝典(六): PNSet
- CRDT宝典(七): VClock
- CRDT宝典(八): LLW-Register
- CRDT宝典(九): ORSet
- CRDT宝典(十): AWORSet
什么是 CRDT?
CRDT 是一种数据结构,可以在分布式系统中实现数据的最终一致性。它允许多个副本独立地进行更新,并能够在合并不同副本的数据时自动解决冲突。
CRDT 的主要特点
- 无冲突性 - 不同节点的并发操作不会产生冲突
- 最终一致性 - 所有副本最终会收敛到相同状态
- 单调性 - 系统状态只会向前发展,不会回退
CRDT 的两种类型
-
CvRDT (State-based CRDT)
- 基于状态合并
- 需要传输完整状态
- 合并操作必须满足幂等性
-
CmRDT (Operation-based CRDT)
- 基于操作传播
- 只需传输操作
- 要求操作满足交换性
常见的 CRDT 数据类型
- G-Counter (增长计数器)
- PN-Counter (正负计数器)
- G-Set (增长集合)
- 2P-Set (双阶集合)
- LWW-Register (最后写入者获胜寄存器)
CRDT 的应用场景
- 协同文档编辑
- 分布式数据库
- 实时多人游戏
- 聊天系统
- 分布式缓存
CRDT 的优缺点
优点:
- 高可用性
- 最终一致性保证
- 适合弱网络环境
缺点:
- 存储开销较大
- 不支持强一致性