如果一个数据库将数据存储在三个不同城市的三个服务器上,当我们写入一个新值时,究竟何时才算写入“完成”?是第一个服务器保存该值时才算完成?还是三个服务器都保存了该值时才算完成?还是三个服务器中有两个确认保存后才算完成?
这个问题的答案至关重要。设想一下,我们进行一次简单的银行转账,从储蓄账户转到支票账户,金额是 500 美元。我们在手机上看到了更新后的余额。但我们的伴侣在另一个城市用笔记本电脑查看同一个账户时,看到的仍然是之前的余额。短短几秒钟内,家里的两个人看到的余额就出现了两种不同的版本。如果是像社交媒体上的点赞数那样的短暂差异,倒也无伤大雅。但对于银行余额来说,情况就完全不同了。
无论读者身处何地、何时阅读,都能确保看到最新内容,分布式系统工程师称之为强一致性。这听起来很简单。但要让它在机器、数据中心乃至不同大陆之间协同工作,却是分布式系统中最棘手的问题之一,因为它需要这些机器进行协调,而协调的成本受物理定律的限制。
在之前的文章中,我们探讨了最终一致性。在本文中,我们将探讨强一致性的真正含义、系统如何实现强一致性以及它的实际成本。
强一致性究竟能带来什么?
原文: https://blog.bytebytego.com/p/strong-consistency-in-databases-promises
