这是我参与「第五届青训营 」笔记创作活动的第8天。
分布式:计算机程序的集合,利用多个跨独立计算节点的计算资源来实现同一个目标。
常见有分布式存储,分布式数据库,分布式计算等。
引入系统模型:
故障模型:
- Byzantine failure
- Authentication detectable byzantine failure
- Performance failure
- Omission failure
- Crash failure
- Fail-stop failure
开始之前引入拜占庭将军问题:两将军派信使穿越敌方领土,信使有可能被截获。理论上,两将军永远无法就进攻时间达成共识。由此引出两种一致性:
- 最终一致性:过程可以不一致,读端最终读到一致内容(eventually consistent)
- 线性一致性:消息客户端更新后,其他读客户端能够立刻读到(Linearization)
同时定义了时间和事件顺序。concurrent等概念。
分布式理论基础:
CAP理论:C:一致性;A:可用性;P:分区容错性。提供CA,CP,AP等组合,旨在平衡三者。
BASE理论:由CAP理论中一致性和可用性权衡的结果。其核心思想为:
- Basically Available(基本可用)
- Soft state(软状态)
- Eventually consistent(最终一致性)
分布式事务:
二阶段提交————为了使基于分布式架构下的所有结点在事务提交时保持一致性而设计的一种演算法。引入三个假设:
- 引入协调者(Coordinator)与参与者(Participants),互相进行网络通信
- 所有节点采用预写性日志
- 所有节点都不会永久性损坏
回滚:参与者反映失败信息,说明该节点本地事务执行不成功,必须回滚。
二阶段提交需要注意的问题:1.性能问题 2.协调者单点故障问题 3.网络分区带来的数据不一致
三阶段提交将prepare拆分成CanCommit和PreCommit机制,解决单点故障和阻塞,并引入超时机制,等待超时后继续事务提交。
MVCC:一种并发控制方法,为每个修改保存一个版本,提高并发性能,解决脏读问题。
共识协议:
Quorum NWR模型: 三要素:
- N 分布式系统中有多少份备份数据
- W 一次成功的更新操作至少w份写入成功
- R 一次成功的读操作至少R份成功读取
要求W+R>N保证强一致性。
RAFT:一种分布式共识一致性算法,提供leader,follower,candidates
可进行leader的选举,Log Republication,切主,Stale读
Paxos协议:并发修改日志,随机选主;并发性能高但是没有一个节点有完整的最新数据。