强一致性(在分布式写场景下通常指 线性一致性)是系统能提供的最强保证。

核心概念

一旦写操作完成并告知客户端成功,系统保证任何后续的读写操作都能立刻看到这个最新的值,且所有节点观察到的操作顺序完全一致。

sequenceDiagram
    participant Client as 客户端
    participant Leader as Leader 节点
    participant Quorum as 多数派节点

    Client->>Leader: 1. 写请求 (X=1)
    Leader->>Quorum: 2. 复制日志
    Quorum-->>Leader: 3. 确认
    Leader-->>Client: 4. 写成功 (原子生效点)
    Note over Leader, Quorum: 此时 X=1 对全球可见
    Client->>Quorum: 5. 读/写请求
    Quorum-->>Client: 6. 必须基于 X=1 操作
  • 原子性:操作看起来像是瞬间完成的,不存在中间状态。
  • 全局时序:所有操作在全局范围内都有一个确定的先后顺序。

实现手段

  • 分布式共识算法:如 Raft、Paxos,通过多数派确认和 Leader 机制保证顺序。
  • 分布式事务:如 2PC(两阶段提交),确保跨节点的原子更新。
  • 分布式锁:通过互斥访问强制将并发操作转为串行。

适用场景

强一致性是分布式系统中最严苛的保障,适用于 “错一点都不行,慢一点也要等” 的极高价值场景:

  • 金融级资金操作:如银行转账、余额扣减。必须保证每一分钱的变动都是实时的、原子的,绝不允许出现“超支”或“双重支付”。
  • 分布式锁的互斥性:如 Etcd 或 Zookeeper 实现的锁。核心诉求是绝对互斥——在任何时刻、任何节点,绝不能有两个客户端同时持有同一把锁。
  • 集群元数据管理:如 Kubernetes 的调度信息、数据库的路由表。这些数据规模不大,但必须保证所有节点看到的配置是完全一致的快照。
  • 关键状态切换:如系统的主备切换(Failover)决策。必须保证所有监控节点对“谁是主节点”达成强一致共识,否则会引发“脑裂”灾难。