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)是一种去中心化、不可篡改、可追溯、多方共同维护的分布式数据库系统

核心特征

  • 块链结构
  • 多独立拷贝存储
  • 拜占庭容错

你可能感兴趣的:(云计算,分布式计算,云计算)