分布式计算、云计算与大数据

云计算与大数据课后笔记

#一、分布式计算概述
(1)分布式计算是一门计算机科学,主要研究对象是分布式系统。
分布式系统是由若干通过网络互联的计算机组成的软硬件系统,且这些计算机互相配合以完成一个共同的目标(往往这个共同的目标称为“项目”);
分布式计算指在分布式系统上执行的计算。分布式计算是将一个大型计算任务分成很多部分分别交给其他的计算机处理,并将所有的计算结果合并为原问题的解决方案。

(2)分布式计算的相关计算形式
<1>单机计算 <2>并行计算<3>网络计算<4>网格计算<5>云计算、

(3)分布式计算的优点

<1> 可靠性、高容错性。
一台服务器的系统崩溃不会影响到其他的服务器。
<2>可扩展性
在分布式计算系统可以根据需要增加更多的机器。
<3> 灵活性
他可以很容易的安装、实施和调试新的服务。
<4>计算速度快
分布式计算机系统可以有多台计算机的计算能力,使得比其它系统有更快的处理速度。
<5> 开放性
由于他是开放的系统,本地和远程都可以访问到该服务。
<6> 高性能
相较于集中式计算机网络集群可以提供更高的性能,及更好的性价比。

(4)分布式计算机的缺点

<1> 故障排除难度高
由于分布在多台服务器上,故障排除和诊断问题难度较高。
<2> 软件支持少
更少的软件支持是分布式计算机系统的主要缺点。
<3>网络基础设施成本高
网络基础设置问题,包括传输、高负载、信息丢失问题。
<3>安全性问题
开放式系统的特性让分布式计算机系统存在着数据的安全性和共享的风险问题。

二、分布式计算范型

1.消息传递范型

消息传递是进程间通信的基本途径。
消息传递是分布式应用的最基本范型。一个进程发送代表请求的信息,该消息被传送到接收者;接收者处理该请求,并发送一条应答消息。随后,该应答消息可能触发下一个请求,并引起下一个应答消息。如此不断传递消息,实现两个进程间的数据交换。消息传递范型所需的基本操作为 send和receive。

2.客户/服务器范型

客户/服务器范型(简称C/S范型)是网络应用中使用最多的一种分布式计算范型,该模式将非对称角色分配给两个协作进程。其中,服务器进程(扮演服务器提供者角色,被动地等待请求的到达;客户进程向服务器发起请求,并等待服务器响应。

3.P2P范型

P2P(Peer-to-Peer)范型源于P2P网络(双称为对待计算网络)。P2P网络是无中心服务器,依赖用户群交换的互联网体系。与客户/服务器结构的系统不同,在P2P网络中,每个用户端既是一个结点,又有服务器的功能,任何一个结点无法直接找到其他结点,必须依靠其用户群进行信息交流。在P2P的范型中,各参与进程的地位是平等的,具有相同的性能和责任。每个参与者(进程)都可以向另一个参与者发起请求和接收响应。在一个基于P2P范型的分布式应用中,每一个参与的进程往往既承担服务器进程的角色,又承担客户进程的角色。

4.消息系统范型

消息系统范型或面向对象的中间伯(MOM)是在基本的消息传递范型的基本上扩展而来的。在这种范型中,消息系统充当一些相当独立的进程之间的中介。不同的进程以非耦合的方式,通过消息系统异步地交换消息。消息发送者在发送消息时,将一条消息放入消息系统中,后者接着将该消息转发到与各个接收者相应的消息接收队列时,一旦消息发送出去,发送者即可执行其它任务了。消息系统范型进一步划分为两种子类型:点对点消息范型和发布/订阅消息范型。

5.远程过程调用范型

对于基本的网络协议和基本的网络应用程序来说,消息传递范型是适用的。但是,随着应用程序变得越来越复杂,需要为网络编程提供进一步的抽象。最好有一种范型能使开发人员可以像编写在单处理器上运行的传统应用程序一样,编写分布式软件系统。远程过程调用(RPC)范型就是提供了这种抽象。利用这一抽象,可以采用与本地过程调用类似的思想与概念,以进行进程间通信。

6.分布式对象范型

远程方法调用:
远程方法调用(RMI)是面向对象版本的PRC。在该范型中,进程可以调用对象方法,而该对象可驻留于某远程主机中。与RPC一样,参数可随方法调用传递,也可提供返回值对象请求代理:对象请求代理范型由对象请求者,对象提供者和对象请求代理范型中,进程向对象请求(ORB)组成。

7.网络服务范型

网络服务范型由服务请求者,服务提供者(对象)和目录服务三者组成。网络服务范型的工作原理为:服务提供者将自身注册到网络上的目录服务器上;当服务请求者(进程)需访问服务时,则在运行时与目录服务器联系;然后,如果请求的服务可用,则目录服务器将向目录服务进程提供一个有关该服务的引用;最后,进程利用该引用来与所需的服务进行交互。

8.移动代理

移动代理一种可移动的程序或对象。在移动代理范型中,一个代理从源主机出发,然后根据其自身携带的执行路线,自动地在网上主机间移动。在每一个主机上,代理访问所需的资源或服务,并执行必要的任务来完成其使命。一个移动代理的典型应用系统实例为Agent Tcl。

9.云服务范型

云计算的三种服务模型:
基础设施即服务(IaaS)
平台即用力(PaaS)
软件即服务(SaaS)

socket编程与客户/服务器应用开发

Socket API 是实现进程间通信的第一种编程设施,因此非常重要,是我们Java开发者必须掌握的能力。

Socket API 已经成为IPC编程事实上的标准,高层IPC设施都是构建于Socket API之上的,即基于Socket API实现。
对于响应时间要求较高或在有限资源平台上运行的应用来说,用Socket API实现是最合适的。

Socket API分类:

使用UDP传输的Socket称为数据包Socket(Datagram Socket);
使用TCP传输的Socket称为流式Socket(Stream Socket);

RMI模型与应用

RMI(Remote Method Invocation)是JAVA早期版本(JDK 1.1)提供的分布式应用解决方案,它作为重要的API被广泛的应用在EJB中。随着互联网应用的发展,分布式处理任务也随之复杂起 来,WebService也得到普遍的推广和应用。
在某些方面,例如跨语言平台的分布式应用,RMI就显得力不从心了。在实际的应用中,是采用WebService还是传统的RMI来实现?这是一个需要权衡的问题,两者的比较如下所述:
1. 比起WebService,它只能使用(调用)由JAVA编写的远程服务。而WebService是跨语言平台的,只要客户端和服务端双方都遵守SOAP规范即可;
2. RMI是在TCP协议基础上传递可序列化的java对象(字节数据),而WebService是在HTTP协议基础上通过XML来传输数据的。因此,在同等业务数据量的前提下,RMI的效率要高于WebService。
因此,RMI可以用在业务结构比较简单,而要求实时高效的分布式应用中。
从设计角度上讲,JAVA采用的是三层结构模式来实现RMI。在整个体系结构中,有如下几个关键角色构成了通信双方:
1.客户端:
1)桩(StubObject):远程对象在客户端上的代理;
2)远程引用层(RemoteReference Layer):解析并执行远程引用协议;
3)传输层(Transport):发送调用、传递远程方法参数、接收远程方法执行结果。
2.服务端:
1)骨架(Skeleton):读取客户端传递的方法参数,调用服务器方的实际对象方法,并接收方法执行后的返回值;
2)远程引用层(Remote ReferenceLayer):处理远程引用语法之后向骨架发送远程方法调用;
3)传输层(Transport):监听客户端的入站连接,接收并转发调用到远程引用层。
3.注册表(Registry):以URL形式注册远程对象,并向客户端回复对远程对象的引用。

Web原理与应用开发

1.HTTP协议
1.1 WWW

WWW是到目前为止最著名的分布式应用,中文名字为“万维网”,常简称为Web。
WWW服务是目前应用最广的一种基本互联网应用,我们第天上网都要用到这种服务。

1
2

1.2 TCP/IP

TCP/IP,传输控制协议/Internet互联协议,是Internet最基本的协议和Internet国际互
联网络的基础。TCP/IP定义了电子设备接入Internet以及数据在其间传输的标准。

1
2

1.3 HTTP协议原理

HTTP(超文本传输协议)用于传送WWW方式的数据,是互联网上应用最为广泛的一种网络协议。HTTP是一个面向连接、无状态的请求应答协议,也是一个客户端终端(用户)和服务器端(网站)请求和应答的标准。

1.4 HTTPS

HTTPS(超文本传输安全协议)是HTTP的安全版,是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上传输的。HTTP用于在Web浏览器和网站服务器之间传递信息。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器
的身份,并为浏览器和服务器之间的通信加密。

P2P原理与实践

1.P2P概述
1.1 原理
P2P即Peer-to-Peer的缩写,含义为“点对点”或者“端对端”,而学术界常称它为“对等计算”。P2P是一种以非集中化方式使用分布式资源来完成一些关键任务的系统和应用。P2P技术打破了传统的C/S模式。在P2P网络中,所有结点的地位都是对等的,每个结点既充当服务器,又充当客户端,这样缓解了中心服务器的压力,使得资源或任务处理更加分散化。

1.2 技术特点

非中心化
可扩展性
健壮性
高性价比
隐私保护
负载均衡

2.P2P网络的分类

(1)中心化拓扑结构
中心化拓扑结构指的是网络中资源和服务的索引都存储在中心服务器目录中,而资
源和服务本身则存储在网络中的各结点中,若一个客户需要访问某资源,则需要先直接
或间接地访问中心服务器,中心服务器通过索引检索存有该资源的具体结点的信息,然
后请求者与这些存有所需资源的结点连接,最后实现对资源的访问。

(2)全分布式非结构化拓扑结构
采用全分布式结构化拓扑结构的P2P网络是一种重叠网络,重叠网络是在现有的网络
体系架构上新加一层虚拟网络,并将虚拟网络中的每个结点与实际网络中的一些结
点相连,从而实现与实际网络中个结点的联通。

(3)全分布式结构化拓扑结构
全分布式结构拓扑采用分布式哈希表(DHT)来组织网络中的各结点,因此这种拓扑结构
的网络也称为DHT网络。在DHT网络中,由广域范围大量结点共同维护庞大的哈希表,散
列表被分割成不连续的块,每个结点被分配一个属于自己的哈希块,并成为这个哈希块的
管理者。网络中每个结点有一个唯一标识自己的ID,且通过哈希函数,为网络中资源分配
唯一的ID,然后将资源存储在资源ID与结点ID相等或相近的结点中。当需要查找资源时,
可以采用类似资源散列的方法定位到存储资源的结点上。

(4)半分布式拓扑结构
半分布式拓扑结构吸取了中心化拓扑结构和全分布式非结构化拓扑结构的优点,选择
性能较高的结点作为超级结点,在各个超级结点上存储了系统中其他部分结点的信息,
检索算法仅在超级结点间转发,超级结点再将查询请求转发给适当的叶子结点。

八、云计算原理
1.云计算概述
1.1云计算的起源

随着信息和网络通信技术的快速发展,计算模式从最初的把任务交给大型处理机集中计算,
逐渐发展为更有效率的基于网络的分布式任务处理模式,自20世纪80年代起,互联网快速
发展,基于互联网的相关服务的增加,以及使用和交付模式的变化,云计算模式应运而生。

1.2云计算的定义

云计算一种利用互联网实现随时随地、按需、便捷地访问共享资源池(如计算设施、存储设备、应用程序等)的计算模式。

云计算模式具有个基本特征:按需自助服务、广泛的网络访问、共享的资源池、快速弹性能力、可度量的服务。

云计算有4种部署方式:私有云、社区云、公有云、混合云。

1.3云计算的分类

IaaS:
IaaS是云计算的基础,为上层计算服务提供必要的硬件资源,同时在虚拟化技术的支持下,IaaS层可以实现硬件资源的按需配置,创建虚拟的计算、存储中心,使其能够把计算单元、存储器、I/O设备、带宽等计算机基础设施集中起来,成为一个虚拟的资源池来对外提供服务。虚拟化是IaaS的关键技术

PaaS:
PaaS既要为SaaS层提供可靠的分布式编程框架,又要为IaaS层提供资源调度、数据管理、屏蔽底层系统的复杂性等支持。同时PaaS又将自己的软件研发平台作为一种服务开放给用户,如软件的个性化定制开发。

SaaS:
云计算要求硬件资源和软件资源能够更好地被共享,具有良好的伸缩性,任何一个用户都能够按照自己的需求进行定制而不影响其他用户的使用。多租户技术就是云计算环境中能够满足上术需求的关键技术,而软件资源共享则是SaaS的服务目的,用户可以使用按需定制的软件服务,通过浏览器访问所需的服务。

2.云计算关键技术
2.1体系结构

核心服务层:
云计算核心服务层通常分为3个子层:IaaS、PaaS、SaaS。
IaaS提供硬件基础设施部署服务,为用户按需提供实体或虚拟的计算、存储和网络等资源。
PaaS是云计算应用程序运行环境。提供应用程序部署与管理服务。
SaaS是基于云计算基础平台所开发的应用程序。

服务管理层:
服务管理层为核心服务层的可用性、可靠性和安全性提供保障。

用户访问接口层:
用户访问接口层实现了云计算服务的泛在访问。

数据存储:
云计算环境下的数据存储,通常称为海量数据存储,或大数据存储。

2.2数据存储

云计算环境下的数据存储,通常称为海量数据存储,或大数据存储。

数据中心:
实现云计算环境下数据存储的基础是由数以万计的廉价存储设备所构成的庞大的存储中心,这些异构的存储设备通过各自的分布式文件系统将分散的、低可靠的资源聚合为一个具有高可靠性、高可扩展性的整体、在此基础上构建面向用户的云存储服务。

分布式文件系统:
分布式文件系统是云存储的核心。作为云计算的数据存储系统,对DFS的设计既要考虑系统的I/O性能,又要保证文件系统的可靠性与可用性。

计算模式:
云计算的计算模型是一种可编程的并行计算框架,需要高扩展性和容错性支持。 PaaS平台不仅要实现海量数据的存储,而且要提供面向海量数据的分析处理功能。

 MapReduce是Google提出的并行程序编程模型,运行于GFS之上。MapReduce的设
 计思想在于将问题分而治之,首选将用户的原始数据源进行分块,然后分别交给不
 同的Map任务去处理。Map任务从输入中解析出键-值对(key/value)集合,然后
 对这些集合执行用户自行定义的Map函数得到中间结果,并将该结果写入本地硬盘。
 Reduce任务从硬盘上读取数据之后会根据皱键值进行排序,将具有相同键值的数据
 组织在一直起。

资源调度:
海量数据处理平台的大规模性给资源管理与调度带来挑战。云计算平台的资源调度包括 异构资源管理、资源合理调度与分配等。

虚拟化:
云计算的发展离不开虚拟化技术。虚拟化技术可以将物理上的单台服务器虚拟成逻辑上的多台服务器环境,可以个性单台虚拟机的物理配置,每台虚拟机逻辑上可以被单独作为服务器使用。通过这种分割行为,将闲置或处于低峰的服务器使用起来,使数据中心为云计算提供大规模资源,通过虚拟化技术实现基础设施服务的按需分配。虚拟化是IaaS层的重要组成部分,也是云计算的重要特点。

特点:资源共享、资源定制、细粒度资源管理。

2.3Google云计算原理

GFS:
网页搜索业务需要海量的数据存储,同时还需要满足高可用性、高可靠性和经济性等要求。为此,Google开发了分布式文件系统——Google File System(GFS)。

MapReduce:
为解决大规模并行计算的编程、数据分发和容错处理等问题,Google公司的工程师设计了一个新的抽象模型MapReduce,只需执行简单的计算,同时可隐藏并行化、容错、数据分布、负载均衡等杂乱的细节。

BigTable:
由于Google的许多应用需要管理大量的格式化以及半格式化数据,上述应用的共同特点是需要支持海量的数据存储,读取后进行大师的分析,数据的读操作频率远大于数据的更新频率等,为此Google开发了满足弱一致性要求的大规模数据库系统,BigTable,针对数据读操作进行了优化,采用基于列存储的分布式数据管理模式以提高数据读取效率。

你可能感兴趣的:(分布式计算、云计算与大数据)