分布式数据库原理、架构与实践
上QQ阅读APP看书,第一时间看更新

第3章
一致性问题的解法

本章将对各种一致性的解决方式进行讨论。其中,涉及次序一致性的问题,主要依靠排序解决。排序则依赖具备“单调性”的事务实现,如时间等。通常我们认为时间是一种单向流逝的序列,即时间可用于表达顺序关系。人类以时间为参考坐标,来刻画世界中发生的事件,而本书提及的时间,是一个逻辑概念,表达的是“顺序”之意。3.2~3.4节讨论了多种时间相关算法(这些算法中涉及的时间不是物理流逝的时间,而是逻辑时间)。

而涉及结果一致性的问题,主要依赖注入Paxos、Raft等一致性算法解决,这些算法将在3.5节和3.6节讨论。

事务处理技术中的可串行化,本质上是指并发事务之间的偏序关系(非并发的事务不相关)对数据状态的影响(对可串行化隔离级别没有任何影响,这使得数据始终处于合法状态;而弱于可串行化隔离级别的其他隔离级别则允许存在数据状态不合法的情况,但不同隔离级别对不合法程度的容忍度不同);分布式一致性中的线性一致性则要求分布式系统内的事件/操作间要建立全序关系(并发的事件/操作在逻辑语义上可能相关),其他的分布式一致性,要求建立的是事件/操作间的偏序关系(据此确定结果被读取时符合偏序关系)。

下面,我们从物理世界中存在的因节点分布带来的问题开始,来理解分布式一致性需要解决的问题,然后再从现有的解决问题的理论和技术的角度展开各节的内容。