这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
一、本堂课重点内容:
- 分布式概述
- 系统模型
- 理论基础
- 分布式事务
- 共识协议
- 分布式实践
二、详细知识点介绍:
-
分布式系统是计算机程序的集合,这些程序利用多个独立计算节点的计算资源来实现共同的目标。分为分布式计算、分布式存储、分布式数据库等
-
优势:去中心化、低成本、弹性、资源共享、可靠性高
-
挑战:普遍的节点故障、不可靠的网络、异构的机器与硬件环境、安全
-
分布式存储:GFSgoogle分布式文件系统 Hadoop HDFS基于GFS架构的开源分布式文件系统 Zookeeper高可用的分布式数据管理与系统协调框架
-
分布式数据库:HBase,MangoDB
-
分布式计算:Hadoop、Spark
-
最难处理的故障:节点可以篡改发送给其他节点的数据,大多数分布式系统不解决拜占庭故障
-
慢了还不如死掉,死掉后寻找一个新的节点可以更快解决问题
-
拜占庭将军问题:共识和消息传递的不同:即便保证了消息传递成功,也不能保证达成共识。TCP三次握手实在两个方向确认包的序列号,增加了超时重试,是两将军问题的一个工程解。
-
一致性和可用性是对矛盾
-
线性一致性和强一致性相似
-
利用逻辑时钟,我们可以对整个系统中的事件进行排序
-
CAP 一致性,可用性和隔离性 CA(单机) CP(安全) AP(用户体验)
-
Base理论是对cap中一致性和可用性权衡的结果,核心思想:基本可用,软状态,最终一致性(AP)
-
两阶段提交 预写式日志被保持在可靠的存储设备上 prepare阶段和commit阶段 在prepare阶段,如果某个事务参与者反馈失败消息,说明该节点的本地事务执行不成功,必须回滚。
-
MVCC是一种并发控制方法,为每一个修改保存一个版本,和事务的时间戳相关联。可以提高并发性能,解决脏读的问题。
-
Quorum NWR N备份数据份数 W一次成功的更新操作要求至少有W份数据写入成功 R一次成功的读取操作要求至少有R份数据成功读取 W+R>N 允许数据覆盖 将CAP的选择交给用户
-
Raft协议是一个分布式一致性算法,即使出现部分节点故障2,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。leader、follower、candidate
-
Leader - 领导者:Leader 负责处理所有的客户端请求,并向Follower同步请求日志,当日志同步到大多数节点上后,通知Follower提交日志
-
Follower - 跟随者:接受并持久化Leader同步的日志,在Leader告知日志可以提交后,提交日志
-
Candidate - 备选者:Leader选举过程中的临时角色。向其他节点发送请求投票信息
-
Log(日志):节点之间同步的信息,以只追加写的方式进行同步,解决了数据被覆盖的问题
-
Term(任期号):单调递增,每个Term内最多只有一个Leader
-
Committed:日志被复制到多数派节点,即可认为已经被提交
-
Applied:日志被应用到本地状态机:执行了log中命令,修改了内存状态
四、课后个人总结:
- 分布式一般在参加工作后才会接触的,应该是属于基础架构的工作范围吧。基于CAP理论进行取舍。通过MIT的课程、论文等可以更加深入的了解分布式算法。
五、引用参考:
-
无