这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
一、目录
本节课主要分为六个部分:
1.分布式理论概述
2.系统模型
3.理论基础
4.分布式事务
5.共识协议
6.分布式实践
二、分布式理论概述
分布式系统:跨多个节点的计算机程序的集合,具有去中心化、低成本、弹性、资源共享、可靠性高等优势。
例子
分布式存储:GFS、Ceph、HDFS、Zookeeper。
分布式数据库:Spanner、TiDB、HBase、MangoDB。
分布式计算:Hadoop、YARN、Spark。
三、系统模型
故障问题:Byzantine failure,Authentication detectable byzantine failure (ADB),Performance failure,Omission failure,Crash failure,Fail-stop failure。
拜占庭将军问题:两将军问题,三将军问题,四将军问题。
四、理论基础
CAP,ACID,BASE。
五、分布式事务
两阶段提交,三阶段提交,MVCC。
六、共识协议
Quorum NWR模型
N:在分布式存储系统中,有多少份备份数据
W:代表一次成功的更新操作要求至少有w份数据写入成功
R: 代表一次成功的读数据操作要求至少有R份数据成功读取
为了保证强一致性,需要保证 W+R > N
Raft协议
Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。
Leader:Leader 负责处理所有的客户端请求,并向Follower同步请求日志,当日志同步到大多数节点上后,通知Follower提交日志。
Follower:接受并持久化Leader同步的日志,在Leader告知日志可以提交后,提交日志。
Candidate:Leader选举过程中的临时角色。向其他节点发送请求投票信息。
Log(日志):节点之间同步的信息,以只追加写的方式进行同步,解决了数据被覆盖的问题。
Term(任期号):单调递增,每个Term内最多只有一个Leader。
Committed:日志被复制到多数派节点,即可认为已经被提交。
Applied:日志被应用到本地状态机:执行了log中命令,修改了内存状态。
Paxos协议
可并发修改日志,而Raft写日志操作必须是连续的。
可随机选主,不必最新最全的节点当选Leader。
七、分布式实践
见代码。