最终一致性(Eventual Consistency) 是分布式系统中最常用、性能最高的一致性模型。它在性能与一致性之间选择了性能,接受数据在短期内的不一致,以换取系统的极高可用性。

核心概念

它不保证读操作能立即读到最新的数据,但保证在没有新的写操作发生的情况下,经过一段时间(收敛时间)后,所有副本的数据最终都会达成一致

sequenceDiagram
    participant Client as 客户端
    participant Master as 主节点
    participant Slave as 从节点

    Client->>Master: 1. 写数据 (X=1)
    Master-->>Client: 2. 成功 (立即返回)
    Note right of Master: 异步同步中...
    Client->>Slave: 3. 读数据 (同步未完成)
    Slave-->>Client: 4. 返回 X=0 (旧值)
    Note over Master, Slave: 经过收敛时间 T
    Client->>Slave: 5. 读数据 (同步已完成)
    Slave-->>Client: 6. 返回 X=1 (最终一致)
  • 高可用性:系统不需要为了同步数据而阻塞读写,响应速度极快。
  • 短暂不一致:允许在数据同步期间,不同节点返回不同版本的数据。
  • BASE 理论:是分布式架构 BASE 理论(基本可用、软状态、最终一致性)的核心基石。

实现手段

  • 异步复制 (Asynchronous Replication):主库完成写入后立即返回成功,数据通过后台线程异步推送到其他副本。
  • 读时修复 (Read Repair):在读取数据时,如果发现多个副本版本不一致,则触发同步修复。
  • 反熵机制 (Anti-Entropy):通过后台进程(如 Merkle Tree 对账)定期扫描并修复副本间的数据差异。

适用场景

  • 大多数互联网业务(如文章点赞数、社交媒体评论列表、非核心配置更新)。