本文为书籍<<从Paxos到ZooKeeper分布式一致性原理与实战>>读书笔记,文中大部分内容来源于书中,侵权必删!
一.CAP理论
CAP理论:一个分布式系统不能同时满足一致性,分区容错性,可用性。
一致性:在分布式环境中,一致性是指多个副本直接是否能够保持一致的特性。
可用性:指系统的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。
分区容错性:分布式系统在遭到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生故障。
对于分布式系统而言,分区容错性是必须要面对和解决的问题,因此往往需要把精力花在如何根据业务特点在一致性和可用性之间寻求平衡。
二.BASE理论
BASE理论是 Basically Available(基本可用),Soft State(软状态),Eventually Consistent(最终一致性)三个短语的简写,其核心是即使无法做到强一致性,但是每个应用都可以根据业务自身的特点,采用适当的方式达到最终一致性。
基本可用:指系统出现不可预知的故障的时候,允许损失部分可用性。例如响应时间上的损失,功能上的损失。
软状态:允许系统中的数据存在中间状态,并认为中间状态的存在不影响系统的整体可用性。
最终一致性:系统的所有数据副本在经过一段时间的同步后,最终能够达到一个一致的状态。
三.最终一致性的变种
因果一致性
读己之所写
会话一致性
单调读一致性
单调写一致性
四.二阶段提交
在跨多个分布式节点的时候,为了保持事物处理的ACID特性,就需要一个称为协调者的组件来统一调度所有的分布式节点的执行逻辑,这些被调度的分布式节点称为参与者。
协调者负责参与者的行为,并最终决定这些参与者是否要把事物真正进行提交。
二阶段提交协议是讲事物提交的过程分成了俩个阶段来进行处理。
阶段一:提交事物请求
1.事物询问
2.执行事物
3.各参与者向协调者反馈事物询问的响应。
阶段二:执行事物提交
执行事物提交
1.发送提交请求
2.事物提交
3.反馈事物提交结果
4.完成事物
中断事物
1.发送回滚请求
2.事物回滚
3.反馈事物回滚结果
4.中断事物
优点:原理简单,实现方便
缺点:同步阻塞,单点问题,数据不一致,太过保守
五 三阶段提交
三阶段提交是二阶段提交的改进版,将二阶段提交的提交事物请求过程一分为二,形成了CanCommmit,PreCommit,do Commit
CanCommit
1.事物询问
2.各参与者向协调者反馈事物询问的响应
PreCommit
执行事物预提交
1.发送与提交请求
2.事物预提交
3.各参与者向协调者反馈事物执行的响应
中断事物
1.发送中断请求
2.中断事物
DoCommit
执行提交
1.发送事物提交请求
2.事物提交
3.反馈事物提交结果
4.完成事物
中断事物
1.发送中断请求
2.事物回滚
3.反馈事物回滚结果
4.中断事物
优点:降低了参与者的阻塞范围,并且能够在出现单点故障后达成一致
缺点:任然存在数据不一致性的情况