本章跟着一条线走:分布式把数据复制成多份之后,立刻要知道"多份之间能不能说读到一份就一样"——这就是一致性。这一章给一致性装上两把尺子:CAP 定理告诉你哪些目标注定不能同享,一致性模型告诉你"差异"可以被约定成多少种可接受的形态。整章是一条从"无奈的选择"走向"有选择的设计"的线。
第 1 章你接受了"网络不可靠、故障会来"。现在数据成了多份,麻烦立刻变具体:客户端写了一次,等它再读时,到底读到哪一份?这一章的主线,是围绕着一张表展开的——数据放了三份,任何一个节点出问题,你都必须在"响应快但可能给旧值"和"一定给新值但可能要堵住等"之间做选择。我们把这枚硬币的两个面分别叫一致性 C 和可用性 A。点破"你没法两个都拿到"的,就是 CAP 定理;告诉你"拿不到强一致时还能拿什么别的"的,是 BASE 与一致性模型。
这一章最关键的认知转折是:一致性不是"有或无",而是一根可以分档的刻度尺。新手眼里只有"强一致"和"脏读"两个极端;学完本章你会发现强一致、顺序一致、因果一致、最终一致是连续的档位,每退一档,就换到一定的性能与可用性余量。判断一个系统好不好,不是看它是不是强一致,而是看它有没有把"客户其实只需要哪一档一致"这问题想清楚。
学完本章你手里会多一张四档贴纸,常把它贴在手边:强一致——读到的必是最新值,适合账务、库存扣减这类"错一个子都不行";顺序一致——单客户看到自己的操作按顺序发生,适合个人会话与订单状态流;因果一致——有因果关系的写操作按序可见,别的顺延即可,适合社交时间线;最终一致——短暂读到旧值但总会追平,适合点赞数、阅读量等对实时性不敏感的数据。真正的问题从来不是"这系统强一致吗",而是"我这条业务到底需要第几档、愿意为它付出多大延迟代价"。带着这张贴纸去读后面每一章,你会立刻明白为什么 TiDB 敢叫强一致、而 Cassandra 只承诺最终一致。
一致性是"逻辑层面怎么约定",但约定要落地,必须看"物理上节点怎么被组织"——这正是第 3 章架构要回答的:Shared-Nothing、Shared-Disk、Shared-Memory 三种组织方式,决定了你在 2.1 里做的取舍能否真的兑现。第 3 章把第 2 章的尺子装进真实集群。