强一致性(Strong Consistency) 是最高级别的一致性保证。

核心概念

在强一致性模型下,一旦写操作完成并向客户端返回成功,那么任何后续的读操作都必须能够读到这个最新的值

sequenceDiagram
    participant Client as 客户端
    participant Leader as 节点 A (Leader)
    participant Follower as 节点 B (Follower)

    Client->>Leader: 1. 写数据 (X=1)
    Leader->>Follower: 2. 同步数据
    Follower-->>Leader: 3. 确认同步成功
    Leader-->>Client: 4. 返回写成功
    Note over Client, Follower: 此时任何节点都能读到 X=1
    Client->>Follower: 5. 读数据
    Follower-->>Client: 6. 返回 X=1 (最新值)
  • 逻辑实时性:从外部观察者视角看,数据更新在所有副本上表现为“原子性”完成。
  • 无陈旧数据:不存在用户读到“旧版本”数据的窗口期。
  • 全局一致视图:所有客户端在逻辑上看到的都是同一份最新的数据快照。

原子性指的是分布式系统对外的表现像一个不可分割的整体。一旦数据更新成功,这种变化对所有观察者来说是同时、完整且不可逆转的,不存在观察到“更新了一半”的中间状态。

强一致性下的“不一致”悖论:只要是多个节点,理论上就存在节点 A 更新了数据、节点 B 还没更新完成的情况,这就是所谓的“同步延迟”。强一致性就是通过各种手段,确保在数据还没同步完之前,谁也读不到旧数据。

实现代价与局限

在分布式物理世界中,强一致性并非真的“零延迟同步”,而是通过牺牲性能来换取逻辑上的绝对一致:

  • 同步阻塞:写操作必须等待足够多(或全部)副本确认写入成功后才能返回,导致响应时间(Latency)显著增加。
  • 可用性风险:根据 CAP 定理,在网络分区(P)发生时,强一致性系统通常会选择停止服务(牺牲 A)来保证数据一致(C)。
  • 吞吐量受限:复杂的共识算法(如 Raft, Paxos)或分布式锁会限制系统的并发处理能力。

实现手段

在分布式系统中,实现强一致性通常依赖以下技术:

  • 共识算法:如 Raft、Paxos,通过多数派投票确保节点达成一致。
  • 分布式事务:如 2PC(两阶段提交),强制所有节点同步成功或回滚。
  • 分布式锁:通过互斥访问保证同一时间只有一个客户端能操作数据。
  • Quorum 机制:通过配置读写副本数()强制读写重叠。

适用场景

  • 金融交易、库存扣减等对数据准确性要求极高的核心业务。