读书摘录--《从Paxos到Zookeeper 分布式一致性原理与实践》--part1
p2 从2009年开始,阿里集团启动了“去IOE”计划,其电商系统正式开始迈入分布式系统时代。
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
分布式系统的特征:分布性、对等性、并发性、缺乏全局时钟、故障总是会发生。
p4 分布式环境的各种问题:通信异常、网络分区、三态(成功、失败、超时)、节点故障
当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节点则不能——我们将这个现象称为网络分区,就是俗称的脑裂。
p10 CAP定理:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的两项。
p12 BASE是Basically Available(基本可用)、Soft State(软状态)和Eventually consistent(最终一致性)。
最终一致性存在以下五类主要变种:
1、因果一致性
2、读己之所写
3、会话一致性
4、单调读一致性
5、单调写一致性
p19 二阶段提交将一个事务的处理过程分为了投票和执行两个阶段,其核心是对每个事务都采用先尝试后提交的处理方式,因此也可以将二阶段提交看做是一个强一致性的算法。
二阶段提交的优缺点:
优点:原理简单,实现方便
缺点:同步阻塞、单点问题、脑裂、太过保守。
p21 三阶段提交是二阶段提交的改进版 ,将二阶段提交协议的“提交事务请求”过程一分为二,形成了有canCommit、PreCommit和doCommit 三个阶段组成的事务处理协议。
三阶段提交的优缺点
优点:相较于二阶段提交协议、三阶段提交协议最大的优点就是降低了参与者的阻塞范围,并且能够在出现单点故障后继续达成一致性。
缺点:三阶段提交协议在去除阻塞的同时也引入了新的问题,那就是在参与者接收到preCommmit消息后,如果网络出现分区,此时协调者所在的节点和参与者无法进行正常的网络通信,在这种情况下,该参与者依然会进行事务的提交,这必然出现数据的不一致性。
p37 Paxos算法引入了“过半”的理念,通俗地讲就是少数服从多数的原则。同时,Paxos算法支持分布式节点角色之间的轮换,这极大地避免了分布式单点的出现,因此Paxos算法既解决了无限期等待问题,也解决了“脑裂”问题。
P39 Google chubby是一个大名鼎鼎的分布式锁服务,GFS和Big Table等大型系统都用它来解决分布式协作、元数据存储和Master选举等一系列分布式锁服务相关的问题。
p40 Chubby之所以设计成一个完整的分布式锁服务,是因为锁服务具有以下4个传统算法库所不具有的优点。
1、对上层应用程序的侵入性更小
2、便于提供数据的发布与订阅
3、开发人员对基于锁的接口更为熟悉
4、更便捷地构建更可靠的服务
p42 Chubby的设计目标:
1、提供一个完整的、独立的分布式锁服务,而非仅仅是一个一致性协议的客户端库。
2、提供粗粒度的锁服务
3、在提供锁服务的同时提供对小文件的读写功能
4、高可用、高可靠
p43 一个典型的Chubby集群,或称为Chubby cell,通常由5台服务器组成。这些副本服务器采用Paxos协议,通过投票的方式来选举产生一个获得过半票数的服务器作为Master。
p46 在Chubby中,主要采用锁延迟和锁序列器两种策略来解决由于消息延迟和重排序引起的分布式锁问题。
长按二维码关注