logo
System Design Core Concepts

Consistency 模式

弱 consistency、最终 consistency 与强 consistency

当同一份数据存在多个 replicas 时,我们需要在 consistencyavailability 之间做选择,确保客户端看到的数据尽可能一致。回想 CAP 理论 对 consistency 的定义:每次访问都能看到最新数据,但可能会牺牲可用性。

弱 consistency(Weak Consistency)

写入后,读取可能看到也可能看不到新数据。系统会尽力优化让客户端尽快看到最新数据。

这类模式在 memcached 等系统里常见。弱 consistency 在 VoIP、视频通话和实时多人游戏等场景表现不错:比如通话中短暂断线,重连后不会补齐那几秒的内容。

最终 consistency(Eventual Consistency)

写入后,读取最终能看到新数据(通常是毫秒级)。数据通过 async replication 传播。

DNS 和 email 等系统常用该模式。最终 consistency 在高 availability 系统里更容易扩展。

强 consistency(Strong Consistency)

写入后,读取立即可见。数据同步复制。

文件系统和关系型 database(RDBMS)常用该模式。强 consistency 适合对准确性要求极高的场景,比如金融、交易记录等。

Trade-off 示例

  • 银行转账:强 consistency,转账成功后余额必须立刻正确
  • 社交 feed:最终 consistency,短暂延迟可接受但更强调 availability

来源及延伸阅读

相关练习题

Consistency 模式

暂无相关练习题