这是我参与【第五届青训营】伴学笔记创作活动的第8天,
分布式概述
分布式:分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。
优势:
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
挑战:
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
使用者视角:为了存储和计算大规模数据和降低成本,学习分布式框架和分布式系统,清理规模,负载,一致性要求等,明确确定性的要求
学习者视角:后端开发必备技能,帮助理解后台服务器之间协作的机制,要掌握分布式理论了解一致性协议
常见的分布式系统:
分布式存储:Google File System:google分布式文件系统 Ceph:统一的分布式存储系统
分布式数据库:Google Spanner:Google可扩展的分布式数据库 TiDB:开源分布式关系型数据库
分布式计算:Hadoop:基于MapReduce分布式计算框架 Spark:在Hadoop的基础上,使用内存来存储数据
系统模型
故障模型:对拜占庭问题,不能完全解决,可以对消息进行加密等措施
共识和一致性
时间和事件顺序
理论基础
CAP理论
一致性、可用性、分区容错性,无法同时满足CAP
ACID理论
原子性(事务包含的所有操作要不全部成功,要不全部失败)、一致性、隔离性(不被干扰)、持久性,原子性和一致性一定要保证
BASE理论
基本可用、软状态、最终一致性
分布式事务
二阶段提交:为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算法,分为Prepare阶段和Commit阶段
两阶段提交注意的问题:
-
性能问题
-
协调者单点故障问题
-
网络分区带来的数据不一致(回滚加锁保护)
MVCC:一种并发控制的方法,维持一个数据的多个版本使读写操作没有冲突,可以提高并发性能,解决脏读问题
共识协议
Quorum NWR三要素
N:有多少份备份数据
W:代表一次成功的更新操作要求至少有w份数据写入成功
R:代表一次成功的读数据操作要求至少有R份数据成功读取
RAFT协议
是一种分布式一致性算法,即使出现部分节点故障,网络延迟也不影响各节点,进而提高系统的可用性
分布式实际
MapReduce
(统计单词出现次数)
Mapper:将输入分解为多个Job来并行处理,彼此之间没有依赖关系
Shuffler:将maper结过打乱,防止数据倾斜
Reducer:将map阶段的结果进行全局汇总