《从Paxos到Zookeeper分布式一致性原理与实践》笔记
分布式系统简介
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
分布式系统特点
- 分布性
- 对等性
- 并发性
- 缺乏全局时钟
- 故障总会发生
分布式环境中的问题
- 通信异常
- 网络分区(脑裂)
- 三态(成功、失败、超时)
- 节点故障
CAP定理
CAP理论告诉我们,一个分布式系统不可能同时满足一致性(C),可用性(A),分区容错性(P)这三个基本需求,最多只能同时满足其中两项。
一致性
分布式环境中的一致性是指数据在多个副本之间是否能够保持一致的特性。
可用性
可用性是指系统必须一致处于可用的状态,对用用户的请求能够在有限时间内返回结果。其中,“有限时间”是相对的,是用户可接受的合理响应时间;“返回结果”是期望的结果,可以是成功或失败,不能是用户不能接受的结果。
分区容错性
分布式系统在遇到网络分区故障时,仍能够对外提供满足一致性和可用性的服务,除非整个网络发生故障。
已经证明分布式系统不能同时满足CAP,P是分布式系统必须面对和解决的问题,所以大部分分布式系统是在C和A之间找平衡。
BASE理论
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致)三个短语的简写,基于CAP发展而来,主要解决C和A之间的平衡。
基本可用
允许故障发生时损失部分可用性,但不是说系统不可用。
软状态
允许数据存在中间状态,既允许数据不同副本之间的同步过程存在延时。
最终一致
最终一致是指数据副本在经过一段时间的软状态后最终达到一致。最终一致是一种特殊的弱一致性。
在工程实践中,最终一致性存在5类变种,工程上通过五中组合实现最终一致性。
- 因果一致性
- 读己之所写
- 会话一致性
- 单调读一致性
- 单调写一致性