CRDT宝典 - 基本概念

145 阅读1分钟

宝典目录

什么是 CRDT?

CRDT 是一种数据结构,可以在分布式系统中实现数据的最终一致性。它允许多个副本独立地进行更新,并能够在合并不同副本的数据时自动解决冲突。

CRDT 的主要特点

  1. 无冲突性 - 不同节点的并发操作不会产生冲突
  2. 最终一致性 - 所有副本最终会收敛到相同状态
  3. 单调性 - 系统状态只会向前发展,不会回退

CRDT 的两种类型

  1. CvRDT (State-based CRDT)

    • 基于状态合并
    • 需要传输完整状态
    • 合并操作必须满足幂等性
  2. CmRDT (Operation-based CRDT)

    • 基于操作传播
    • 只需传输操作
    • 要求操作满足交换性

常见的 CRDT 数据类型

  1. G-Counter (增长计数器)
  2. PN-Counter (正负计数器)
  3. G-Set (增长集合)
  4. 2P-Set (双阶集合)
  5. LWW-Register (最后写入者获胜寄存器)

CRDT 的应用场景

  1. 协同文档编辑
  2. 分布式数据库
  3. 实时多人游戏
  4. 聊天系统
  5. 分布式缓存

CRDT 的优缺点

优点:

  • 高可用性
  • 最终一致性保证
  • 适合弱网络环境

缺点:

  • 存储开销较大
  • 不支持强一致性