这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
一、本堂课重点内容
- 分布式
二、详细知识点介绍
1.分布式概述
什么是分布式:分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
优势:
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
Why-How-What:针对于使用者和学习者有不同的要求,作为学者是后端开发必备技能,掌握分布式的理论和一致性协议。
常见的分布式系统:
-
分布式存储:
- Google File System(GFS):google分布式文件系统
- Ceph:统一的分布式存储系统
- Hadoop HDFS:基于GFS架构的开源分布式文件系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
-
分布式数据库:
- Google Spanner:google可扩展的、全球分布式的数据库
- TiDB:开源分布式关系型数据库
- HBase:开源Nosql数据库
- MongoDB:文档数据库
-
分布式计算:
- Hadoop:基于MapReduce分布式计算框架
- Spark:在Hadoop基础之上,使用内存来存储数据
- YARN:分布式资源调度
2.系统模型
故障模型、拜占将军问题。
共识和一致性:分为Eventually consistent(最终一致性)和Linerizability(线性一致性)
时间和事件顺序:Lamport逻辑时钟,利用逻辑时钟我们可以对整个系统中的事件进行全序排序
3.理论基础
CAP理论:往往运用于数据库领域,同样可以适用于分布式存储方向
ACID理论:数据库事务拥有的四个特性ACID,原子性(A)、一致性(C)、隔离性(I)和持久性(D)
BASE理论:是对CAP中一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的。
4.分布式事务
两阶段提交:为了使基于分布式系统框架下的所有节点在进行事务提交时保持一致性而设计的一种演算法---Prepare阶段和Commit阶段。
三阶段提交:将两阶段提交中的Prepare阶段,拆成两部分:CanCommit和PreCommit机制,解决了单点故障问题和阻塞问题。
MVCC:是一种并发控制的方法,维持一个数据的多个版本使读写操作没有冲突。所以既不会阻塞写,也不阻塞读。MVCC为每个修改保存一个版本,和事务的时间戳相关联。可以提高并发性能,解决脏读的问题。
5.公识协议
Quorum NWR模型:将CAP的选择交给用户,是是一种简化版的一致性模型。
RAFT协议:是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各结点,进而提高系统的整体可用性。也使用了Quorum机制。
Paxos协议:并发随机选主,所有节点都能写入。
三、课后个人总结
今天学习的是分布式的一些理论概念,了解到很多关于分布式的服务过程,基本的分布式框架和协议以及所需的模型,给我的开发学习之路上了很重要的一课,希望自己继续努力慢慢消化分布式,加油!