一致性:多个副本为什么不能各说各话?

一致性:多个副本为什么不能各说各话?

一致性不是要求所有副本在每一瞬间都完全相同,而是规定它们的读写结果必须遵守什么关系。共享日历在手机和电脑上各有一份数据:你刚改了会议时间,短暂看见旧时间未必就是错误;但系统必须说明何时更新会传播,以及之后读取能否看见已经确认的修改。

它与同步相邻,却不是同一件事。同步关注独立过程怎样在时间上对齐;一致性关注不同观察是否仍符合共同规则。它也不等于准确性:两个副本可以彼此一致,却一起记录了错误地点。

因此,“强一致”并非天然更好。立即让所有位置看见同一结果,往往要付出等待、通信或可用性的代价;允许受控的暂时差异,则可能使系统更快、更能承受断线。关键不是抽象地追求完全相同,而是先说清哪些关系绝不能破坏、哪些差异可以存在多久。


Roadly Philosophy

Roadly Philosophy

想换一种方式接触哲学?试试我开发的 iPhone 哲学游戏 Roadly Philosophy。

在 App Store 下载


了解 Geoffrey Chen 的更多信息

订阅后即可通过电子邮件收到最新文章。