这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
一.分布式概述
1.什么是分布式
分布式系统是计算机程序的集合,利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
优势:
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
缺点:
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
2.Why-How-What
3.常见的分布式系统
分布式存储
分布式数据库
分布式计算
二.系统模型
1.故障模型
从故障的影响等级分为:
- Byzantine failure:节点可以任意篡改发送给其他节点的数据
- Authenticon detectable byzantine failure(ADB):节点可以篡改数据,但不能伪造其他节点的数据
- Performance failure:节点未在特定时间段内收到数据,时间太早或太晚
- Omission failure:节点收到数据的时间无限晚,及收不到数据
- Crash failure:在Omission的基础上,持续性的接收不到
- Fail—stop failure:在Crash的基础上增加了错误可检测的假设
故障总览
2.共识和一致性
最终一致性:
Eventually consistent:只管最终读取的数据是同一的就行
线性一致性:
Linearizability: 一个客户端更新到版本之后,及时同步给其他客户端
3.时间和事件顺序
Lamportt逻辑时间
三.理论基础
1.CAP理论
定义:
C(Consistence):一致性。多个版本之间要保证严格的一致性
A(Avaliability):可用性。系统提供的服务必须一直处于可用状态,每次请求都能获取到非错的响应。但是不鞥保证获取的话剧为最新数据
P(NetWork partitioning):分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障
组合模式:
- CA:放弃分区容错性。单级数据库的选择
- AP:放弃数据一致性,例如用户体验的系统
- CP:放弃可用性。例如参禅安全相关的系统
2.ACID理论
事务
3.BASE理论
定义:
Base理论就是对CAP中一致性和可用性权衡的结果
核心思想:
-
Basically Available(基本可用):假设系统出现问题,但还是能用。损失时间或功能
-
Soft state(软状态):允许系统中的数据存在中间状态,并任务该状态不影响一同的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时
-
Eventually consistent(最终一致性):系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态。客户端对系统的数据访问最终都能够获取到最新的值
四.分布式事务
1.两阶段提交
为了使基于分布式系统架构下的所有节点进行事务提交时保持一致性而设计的算法
三个假设:
可能出现的情况:
注意的问题:
- 性能的问题
因为需要多次提交,节点间的网络通信,好事过大
- 协调者单点故障问题
如果事务协调及诶单当即,需要灵气新的协调者,否则参与者处于中间状态无法完成事务
- 网络分区带来的数据不一致
一部分参与者收到了Commit消息,另一部分参与者没收到。导致节点之间数据不一致
2.三阶段提交
相比于两阶段提交,在Prepare阶段变为CanCommit和PreCommit机制
解决:
- 单点故障问题
- 阻塞问题
3.MVCC
定义:
MVCC是一种并发控制的方法,位置一个数据的多个版本使读写操作没有冲突。不会阻塞写、阻塞读
五.共识协议
1.Quorum NWR模型
三要素
- N;在分布式存储中,有多少份备份数据
- W:代表一次成的更新操作要求至少有w份数据写入成功
- R:代表一次成功的读数据操作要求至少有R份数据成功读取
为了保证强一致性,需要保证 W + R > N
2.Raft协议
定义:
Raft协议是一种分布式一致性算法(共识算法),当出现分节点故障、网络延迟等情况,也不影响个节点。提高整体可用性。RAFT一定意义上也适用了Quorum机制。
角色:
Leader - 领导者:
通常一个系统中是一主多从。Leader负责处理所有的客户端请求,并向Follwer同步请求日志,当日志同步到大多数节点上后,通知Follower提交日志
Follower - 跟踪者:
不会发送任何请求,接收并持久化Leader同步的日志,在Leader告知日志可以提交后,提交日志。当Leader出现故障时,主动推荐自己为Candidate
Candidate - 备选者:
Leader选举过程中的临时角色。向其他节点发送请求投票信息。如果获取大多数选票,晋升为Leader
节点:
Leader选举
Log Replication过程
切主
出现双主
Stale读
3.Paxos协议
Paxos与Raft区别:
- Multi-Paxos可以并发修改日志。Raft写日志必须是连续的
- Multi-Paxos可以随机选主
优势:
写入并发性能高,所有节点都能写入
缺点:
没有一个节点是完整的,恢复流程复杂,需要同步历史记录