强一致性(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 机制:通过配置读写副本数()强制读写重叠。
适用场景
- 金融交易、库存扣减等对数据准确性要求极高的核心业务。