这是我参与「第五届青训营 」笔记创作活动的第8天
分布式理论 - 现代架构基石
一、本堂课重点内容:
- 分布式概述
- 系统模型
- 理论基础
- 分布式事务
- 共识协议
- 分布式实践
本堂课的知识要点有哪些?
- 分布式概述
- 分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
- 分布式存储
- Google File System(GFS):google:分布式文件系统
- Ceph:统一的分布式存储系统
- Hadoop HDFS:基于GFS架构的开源分布式文件系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
- 分布式数据库
- Google Spanner:google可扩展的、全球分布式的数据库
- TiDB:开源分布式关系型数据库
- HBase:开源Nosq|数据库
- MongoDB:文档数据库
- 分布式计算
- Hadoop:基于MapReduce分布式计算框架
- Spark:在Hadoop基础之上,使用内存来存储数据
- YARN:分布式资源调度
- 故障模型
- Byzantine failure:节点可以任意篡改发送给其他节点的数据
- Authentication detectable byzantine failure (ADB)
- Byzantine failure的特例;节点可以篡改数据,但不能伪造其他节点的数据Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
- Omission failure:节点收到数据的时间无限晚,即收不到数据
- Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure
- Fail-stop failure:在Crash failure的基础上增加了错误可检测的假设
- 拜占庭将军
- 时间和事件顺序
- 理论基础
- CAP理论
- ACID理论
- BASE理论
- 二阶段提交
- MVCC
- 共识协议
二、详细知识点介绍:
RAFT协议
-
概述
- Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。
-
三种角色
- Leader - 领导者:Leader 负责处理所有的客户端请求,并向Follower同步请求日志,当日志同步到大多数节点上后,通知Follower提交日志
- Follower - 跟随者:接受并持久化Leader同步的日志,在Leader告知日志可以提交后,提交日志
- Candidate - 备选者:Leader选举过程中的临时角色。向其他节点发送请求投票信息
-
四种定义:
- Log(日志):节点之间同步的信息,以只追加写的方式进行同步,解决了数据被覆盖的问题
- Term(任期号):单调递增,每个Term内最多只有一个Leader
- Committed:日志被复制到多数派节点,即可认为已经被提交
- Applied:日志被应用到本地状态机:执行了log中命令,修改了内存状态
本堂课介绍了哪些知识点?
- 分布式概述
- 系统模型
- 理论基础
- 分布式事务
- 共识协议
- 分布式实践
三、实践练习例子:
MapReduce
- 设计一个简易的MapReduce系统,思考如何应对故障?
分布式KV
- 设计一个简易的分布式键值系统,要求具备弹性的能力和达成线性一致