这是我参与「第五届青训营 」笔记创作活动的第6天。
引言
今天的课程是关于分布式学习的一个入门,学习什么是分布式,为什么使用分布式,使用分布式会面临的挑战,分布式领域相关理论,知识等。这篇文章主要是针对今天课程的记录和总结。
一、本堂课重点内容
本堂课的知识点
- 分布式概述
- 系统模型
- 理论基础
- 分布式事务
- 共识协议
- 分布式实践
二、详细知识点介绍
- 什么是分布式?
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源实现共同目标。
- 分布式的好处和挑战
优势:去中心化,低成本(相同的成本,做更多的事情),弹性(电商活动时扩容,平时就不需要),资源共享
挑战:节点故障,网络不可靠,机器和硬件的不同,安全问题
- 系统模型
六种故障模型,从处理的难易程度分类
-
Byzantine failure:节点可以任意篡改发送给其他节点的数据,是最难处理的故障
-
Authentication detectable byzantine failure (ADB):节点可以篡改数据,但不能伪造其他节点的数据
-
Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
-
Omission failure:节点收到数据的时间无限晚,即收不到数据
-
Crash failure:节点停止响应,持续性的故障
-
Fail-stop failure:错误可检测,是最容易处理的故障
拜占庭将军问题,即类比多个计算机节点在网络中的通信问题
目前保证网络的可靠传输,一般都是基于TCP协议(三次握手建立连接,四次挥手释放连接)
使用三次握手的原因:
使用三次握手和RST控制消息将是否建立连接的最终控制权交给了发送方,因为只有发送方有足够的上下文来判断当前连接是否是错误的或者过期的,这也是 TCP 使用三次握手建立连接的最主要原因。
- 理论基础
CAP理论 分别代表一致性、可用性、分区容错性。
-
C:数据一致性(consistency)
- 所有节点的数据都是最新的(线性一致性,强一致性)
-
A:可用性(availability)
- 数据具备高可用性
-
P:分区容错性(partition-tolerance)
- 容忍网络出现分区,分区之间网络不可达。
只能同时实现CAP中的两个,不可能同时完全满足3个理论
ACID理论
-
事务是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全都不执行(即原子性)
-
数据库事务拥有四个特性ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)
BASE理论
针对AP系统,没有完全满足C(强一致性,线性一致性),但满足最终一致性
- Basically Available(基本可用):假设系统,出现了不可预知的故障,但还是能用
- Soft state(软状态):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性
- Eventually consistent(最终一致性):数据最终一定能够达到一致的状态
- 分布式事务
二阶段提交 待补充
- 共识协议
RAFT协议
Paxos协议
三、实践练习例子
MapReduce
- 设计一个简易的MapReduce系统,思考如何应对故障?
MapReduce 大数据并行处理的计算模型
(1)Mapper负责“分” ,即把复杂的任务分解为若干个“简单的任务”来处理。“简单的任务”包含三层含义:
一是数据或计算的规模相对原任务要大大缩小;二是就近计算原则,即任务会分配到存放着所需数据的节点上进行计算;三是这些小任务可以并行计算,彼此间几乎没有依赖关系。
(2)Reducer负责对map阶段的结果进行汇总。至于需要多少个Reducer,用户可以根据具体问题,通过在mapred-site.xml配置文件里设置参数mapred.reduce.tasks的值,缺省值为1。
分布式KV
- 设计一个简易的分布式键值系统,要求具备弹性的能力和达成线性一致
将海量结构化数根据key分成不同的Region,每个Region存储在一个单机的KV数据库中,Region之间形成Raft Groups,保证强一致
四、课后个人总结
今天这堂课程学习了分布式方面知识的基础,明白了使用分布式的两面性(好处和挑战),学习了许多在分布式领域可用到的理论,一些理论在数据库方面也可适用,如CAP、ACID、MVCC(解决不可重复读)等。通过今天的学习,我对分布式的理解更深了,但后期还需要继续努力学习,尤其是要联系实际项目,实战非常重要。
五、引用参考
[1] 青训营课程资料【后端专场 学习资料三】第五届字节跳动青训营 - 掘金 (juejin.cn)
[2] 课件 分布式理论 - 现代架构基石.pptx - 飞书云文档 (feishu.cn)