02分布式计算
分布式计算
定义
多个通过网络互联的计算机都具有一定的计算能力,它们之间互相传递数据,实现信息共享,协作共同完成一个处理任务
原理
分布式计算就是将计算任务分摊到大量的计算节点上,一起完成海量的计算任务
优点
- 稀有资源共享
- 通过分布式计算可以在多台计算机上平衡计算负载
- 可以把程序放在最适合运行它的计算机上
ACID原则
ACID是数据库事务正常执行的四个原则
- A(atomicity)-- 原子性
- C(consistency)-- 一致性
- I(isolation)-- 独立性
- D(durability)-- 持久性
CAP理论
一个分布式系统最多只能同时满足一致性、可用性、分区容错性 三项中的两项
- 一致性(consistency)
- 可用性(availability)
- 分区容错性(partition tolerance)
BASE理论
base是指基本可用性(basically available)、软状态(soft state)、最终一致性(eventual consistency)
最终一致性分为:强一致性、弱一致性、最终一致性
一致性散列
一致性散列将整个散列值空间组织成一个虚拟的圆环
影子节点没有提供服务的能力
分布式系统的特性
容错性
高可扩展性
开放性
并发处理能力
透明性
分布式存储系统实例 Apache Hadoop
简介
Hadoop是由Apache基金会开发的分布式存储与计算框架
组成
Hadoop是由两个重要模块组成
一个是Hadoop分布式文件系统(Hadoop Distributed File System,HDFS),可以将文件数据分布式地存储在集群中的不同节点上
另一个是MapReduce系统,一个针对大量数据的分布式计算系统
HDFS
Hadoop分布式文件系统是一个主从式的分布式文件系统,是GFS的一种开源实现
HDFS可以利用大量廉价存储器组成分布式存储集群,取代昂贵的集中式磁盘存储阵列
HDFS集群组成
HDFS集群由一个NameNode和多个DataNode组成,除此之外还有用于热备份的Secondary Name Node,防止集群出现单点故障
NameNode是整个集群的管理者,它并不存储数据本身,而是负责存储文件系统的元文件
DataNode是实际的数据存储节点,负责相应NameNode创建、删除和复制块的命令
Secondary Name Node是NameNode的备份节点,当NameNode宕机需要重启时,则可以利用Secondary NameNode中的数据加快NameNode的重启恢复数据
MapReduce
MapReduce 既是Hadoop中的模块,也是一个计算模块
用户需要自己将算法划分为Map和Reduce两个阶段
首先将数据划分为小块的数据,将数据分配到不同计算节点的Map任务中计算
然后将计算结果汇总到Reduce节点中进行合并,得出最终结果
分布式文件存储GFS
GFS--Google File System
GFS设计思路
将文件划分为若干块(Chunk)存储
每块固定大小64M
通过冗余来提高可靠性
每个数据块至少在3个数据块服务器上冗余
通过单个Master来协调数据访问、元数据存储
无缓存
GFS架构缺点
单点故障
性能瓶颈
解决单点故障问题
采用多个(如三个)影子Master节点进行热备份,一旦主节点损坏,立刻选举一个新的主节点服务
解决性能瓶颈问题
尽可能减少数据存取中Master参与程度
Master不存任何数据,只有元数据
客户端缓存元数据
Master节点任务
存储元数据
文件系统目录管理与加锁
与ChunkServer进行周期性通信
数据块创建、复制及负载均衡
垃圾回收
删除陈旧数据块
GFS架构特点
采用中心服务器模式
不缓存数据
在用户态下实现
提供专用的访问接口
GFS容错机制
Master容错
三类元数据:命名空间(目录结构)、Chunk与文件名的映射以及Chunk副本的位置信息
前两类通过日志容错,chunk副本信息存储于Chunk Server, Master出现故障时可恢复
Chunk Server容错
每个Chunk有多个存储副本(通常为三个),分别存储于不同的服务器上
每个Chunk又划分为若干个Block(64KB),每一个Block对应一个32bit的校验码,保证数据正确(若某个Block错误,则转移至其他Chunk副本)
分布式系统
分布式存储系统的五个子方向
结构化存储
非结构化存储
半结构化存储
In-memory存储
NewSQL
结构化存储
传统结构化存储强调以下内容:
结构化的数据
强一致性
随机访问
非结构化存储
非结构化存储强调的是高可扩展性
分布式文件系统
半结构化存储
半结构化是为了解决非结构化存储系统随机访问性能差的问题
键-值
In-memory存储
将数据存储在内存中,从而获得读写的高性能
Redis、内存
NewSQL
分布式计算系统分类
传统基于消息的系统--MPI
MapReduce家族系统--Hadoop的Mahout、Spark的MLI
图计算系统
基于状态的系统
实时流处理系统
典型的分布式系统
网格系统
P2P系统
透明计算
区块链系统
网格系统
能够将多组织拥有和管理的计算机、网络、数据库和科学仪器综合协同使用的基础设施
P2P系统
简介
对等网络系统(Peer-To-Peer),简称P2P系统,即媒体及公众所称的“点对点系统”
P2P系统是一种应用在对等者(Peer)之间分配任务和工作负载的分布式应用架构的系统
三个性质
高度分散化
自组织性
多管理域
特点
部署低门槛
有机增长
对故障与攻击的恢复力
资源的丰富性与多样性
透明计算
是一种用户无须感知计算机操作系统、中间件、应用程序和通信网络的具体所在,只需根据自己的需求,通过网络从所使用的各种资源设备中选择并使用相应服务的计算模式
区块链
简介
区块链(Blockchain)是一种去中心化、不可篡改、可追溯、多方共同维护的分布式数据库系统
核心特征
块链结构
多独立拷贝存储
拜占庭容错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!