原文链接:通俗易懂 强一致性、弱一致性、最终一致性、读写一致性、单调读、因果一致性 的区别与联系 - 知乎 (zhihu.com)
提到分布式架构就一定绕不开“一致性”问题,而“一致性”其实又包含了数据一致性和事务一致性两种情况,本文主要讨论数据一致性(事务一致性指 ACID)。
复制是导致出现数据一致性问题的唯一原因。
如果只用一台数据库来处理所有的写入和读取请求,就一定不存在数据一致性的问题。 但在中大型项目中,我们却经常需要将一份数据存储在超过一台数据库中(即复制),原因有三:
- 即使一部分数据库出现故障,系统也能正常工作(高可用)
- 使数据与用户在地理上接近(降低延迟)
- 扩展可以处理读请求的机器数量(可扩展性、提高读取吞吐量)