云计算原理与实践 第二章、分布式计算(非常重点的一章)

一、分布式计算概述

1、中国科学院对分布式计算有一个定义:分布式计算就是在两个或多个软件互相共享信息。这些软件可以在同一台计算机上运行,也可以通过网络连接起来的多台计算机上运行。分布式计算比起其他算法具有以下几个优点:
(1)稀有资源可以共享
(2)通过分布式计算可以在多台计算机上平衡计算负载
(3)可以把程序放在最适合运行它的计算机上
共享稀有资源和负载平衡是计算机分布式计算的核心思想之一。

2、分布式计算一般分为以下几步:
(1)设计分布式计算模型
(2)分布式任务分配
(3)编写并执行分布式程序(分布式计算的特点就是多个节点同时运算)

二、分布式计算的理论基础

1、ACID原则:
ACID是数据库事务正常执行的四个原则:(顺序不能改变)
(1)原子性(A)(事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚)(例如:从A账户转100元至B账户,分为两个步骤:从A账户取100元;存入100元至B账户。这两步要一起完成。)
(2)一致性©(数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束)
(3)独立性(I)(如果一个事务要访问的数据正在被另一个事务修改,只要另一个事务未提交,它所访问的数据就不受未提交事务的影响)(从A账户转100元至B账户,在这个交易还没有完成情况下,如果B查询自己的账户,是看不到新增的100元的。)
(4)持久性(D)(指一旦事务提交后,它所做的修改将永久保存在数据库上,即使出现宕机也不会丢失)

2、CAP理论:(–应用大题,8-10分)
一个分布式系统最多只能同时满足一致性、可用性和分区容错性这三项中的两项。
(1)一致性©:更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致
(2)可用性(A):服务一直可用
(3)分区容错性§:指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务

3、CAP权衡
(1)CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区始终会存在,因此CA的系统更多的是允许分区后各子系统仍然保持CA。
(2)CP without A:如果不要求A,相当于每个请求都需要在Server之间强一致,而P会导致同步时间无限延长,如此CP也是可以保证的,很多传统的数据库分布式事务都属于这种模式。
(3)AP without C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。

(4)2000年7月,加州大学伯克利分校的埃里克·布鲁尔教授在ACM PODC会议上提出CAP猜想。
4、BASE理论:
BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性,但应用可以采用适合的方式达到最终一致性。
BASE是指
基本可用(允许损失部分可用性,即保证核心可用,部分用户可能会被引导到降级页面)、
软状态(允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态。MySQL replication的异步复制就是这种体现)、
最终一致性(指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态)(最终一致性可概括为过程松,结果紧,最终结果必须保持一致性即可;最终一致性是弱一致性的一种特例)

5、ACID是传统数据库常用的设计理念,追求强一致性;BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。

6、一致性散列:将整个散列值空间组织成一个虚拟圆环。将数据key使用相同的函数Hash计算出散列值,并确定此数据在环上的位置,从此位置沿环顺时针行走,第一台遇到的服务器就是其应该定位到的服务器。
(1)容错性(如果一台服务器不可用,则受影响的数据仅仅是此服务器到其环空间中前一台服务器(即沿逆时针方向行走遇到的第一台服务器)之间的数据,其他不受影响)
(2)扩展性(如果增加一台服务器,则受影响的数据仅仅是新服务器到其前一台服务器之间的数据,其他数据也不会受影响)
(3)虚拟节点(即对每一个服务节点计算多个散列,每个计算结果位置都放置一个此服务节点,称为虚拟节点)

三、分布式系统概述

1、Google是全球最大的互联网公司,也是在分布式技术上相对成熟的公司,其公司的Google分布式文件系统GFS、分布式计算系统MapReduce、分布式表格系统Bigtable都成为业界竞相模范的对象。

2、分布式系统的特性:
(1)容错性(一旦在分布式系统中某个节点发生故障,利用容错机制即可避免整套系统服务不可用)
(2)高可扩展性:指系统能够在运行过程中自由地对系统内部节点或现有功能进行扩充,而不影响现有服务地运行。下面有一个现代分布式系统设计的案例:Storm实时处理系统。在Storm中,节点主要由Spout和Bolt两大类组成,Spout作为消息源会将搜集到地数据发送给Storm计算拓扑中,再通过一系列消息处理单元Bolt进行分布式处理,最终将处理结果合并得到最终结果。
(3)开放性
(4)并发处理能力
(5)透明性

3、分布式存储系统实例:Apache Hadoop
(1)Hadoop由两个重要模块组成。一个是Hadoop分布式文件系统(HDFS),可以将文件数据分布式地存储在集群中地不同节点上;另一个是MapReduce系统,是一个针对大量数据的分布式计算系统。
(2)Hadoop的MapReduce是对谷歌MapReduce的开源实现,另一方面其分布式文件系统则是谷歌的GFS的开源实现。
(3)Hadoop分布式文件系统(HDFS)是一个主从式的分布式文件系统,是GFS的一种开源实现。HDFS集群是由一个NameNode和多个DataNode组成,除此之外还有用于热备份的Secondary NameNode,防止集群出现单点故障。
1)NameNode是整个集群的管理者(它并不存储数据本身,而负责存储文件系统的元数据。它负责管理文件系统名称空间,并控制外部客户端对文件系统的访问。实际数据传输并不经过NameNode,而会让对应的DataNode接收实际数据。整个文件系统只有一个NameNode,因此很明显集群可能会出现单点故障,这点需要利用Secondary NameNode来解决问题)
2)Secondary NameNode是NameNode的备份节点
3)DateNode是实际的数据存储节点(负责相应NameNode创建、删除复制块的命令。NameNode会读取来自DataNode的心跳信息,以此判断DateNode是否存活。同一份数据会以多份副本存储在不同的DataNode上,一旦某一个DataNode宕机,NameNode会立即采取手段来解决问题。)
4)MapReduce模型:MapReduce既是Hadoop中的模块,也是一个计算机模型。用户需要自己将算法划分为Map和Reduce两个阶段。首先将数据划分为小块的数据,将数据分配到不同计算节点的Map任务中计算,然后将计算结果汇总到Reduce节点中进行合并,得出最终结果。

四、分布式系统的进阶

1、分布式存储系统大致可分为5个子方向:
结构化存储(典型场景就是事务处理系统或者关系型数据库,从单机做起,如:MySQL)、
非结构化存储(典型的系统就是分布式文件系统)、
半结构化存储(提出是为了解决非结构化存储系统随机访问性能差的问题。有:NoSQL、Key-Value Store,包括对象存储等)、
In-memory存储(将数据存储在内存中,从而获得读写的高性能,比较有名的系统包括Memcached和Redis)、
NewSQL(即兼容RDBMS的特性,又能像NoSQL那样具有强大的可扩展能力)

2、MySQL的成长史就是互联网的成长史。

3、资源统一管理与调度平台,典型代表是Mesos和YARN。
(1)Mesos诞生于加州大学伯克利分校的一个研究项目,现已成为Apache Incubator中的项目,当前有一些公司使用Mesos管理集群资源,例如Twitter。
(2)YARN是下一代MapReduce,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。整个平台由Resource Manager和Node Manager组成。
随着容器技术的流行,面向容器的资源管理与调度系统也成为人们关注的焦点,除了上面的Apache Mesos之外,Docker的Swarm和Google的Kubernetes也成为了这方面的明星。特别是Kubernetes,大有统一容器界的资源管理的趋势。

五、典型的分布式系统

1、P2P系统:
对等网络系统,简称P2P系统,即媒体与公众所称的“点对点系统”,是一种应用在对等着之间分配任务和工作负载的分布式应用架构的系统。(对等网络的思想:网络的所有参与者共享他们所拥有的一部分硬件资源,包括处理器资源、存储资源和网络资源等,这些共享资源通过网络被其他对等者直接访问并为之提供服务和内容。对等网络结构中不存在中心节点或中心服务器,每一个该网络的参与者既是系统中资源、服务和内容的信息提供者,又是这些信息的消费者。)
(P2P系统主要具备下面三种性质:高度分散化;自组织性;多管理域)

2、区块链系统
(1)区块链源自于比特币的底层技术,2008年,化名为“中本聪‘的学者提出了一种被称为”比特币“的数字货币。
(2)区块链平台可分为公有链和联盟链两类。公有链中所有节点可自由地加入或退出;而联盟链中的节点必须经过授权才可加入。
(3)(区块链的核心特征包括以下三个方面:块链结构;多独立拷贝存储;拜占庭容错。根据这三个特征,派生出不同形式的区块链的落地模式。)

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页