大数据

1.1分布式计算的概念
1.1.1定义
分布式计算是计算机科学的重要研究内容,主要研究对象是分布式系统。简单地说,一个分布式系统是由若干通过网络互联的计算机组成的软硬件系统,且这些计算机互相配合以完成一个共同的目标(往往这个共同的目标称为“项目)

分布式计算的一种简单定义是在分布式系统上执行的计算。更为正式的定义是,分布式计算研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把各部分的计算结果合并起来得到最终的结果。本质上,分布式计算是一种基于网络的分而治之的计算方式
1.1.2分布式计算的优缺点
在计算机网络出现之前,单机计算是计算的主要形式。自20世纪80年代以来,由于Web的促进,分布式计算得到飞速发展。分布式计算可以有效利用全世界联网机器的闲置处理能力,帮助一些缺乏研究资金的、公益性质的科学研究,加速人类的科学进程。分布式计算的优点如下
1)低廉的计算机价格和网络访问的可用性。

今天的个人计算机( Personal Computer,PC)比早期的大型计算机具有更出众的计算能力,但体积和价格不断下降。再加上Internet连接越来越普及且价格低廉,大量互连计算机为分布式计算创建了一个理想环境
2)资源共享。

分布式计算体系反映了计算结构的现代组织形式。每个组织在面向网络提供共享资源的同时,独立维护本地组织内的计算机和资源。采用分布式计算,可非常有效地汇集资源。
3)可伸缩性。

在单机计算中,可用资源受限于单台计算机的能力。相比而言,分布式计算有良好的伸缩性,对资源需求的增加可通过提供额外资源来有效解决。例如,将更多支持电子邮件等类似服务的计算机增加到网络中,可满足对这类服务需求增长的需要。
4)容错性。

由于可以通过资源复制维持故障情形下的资源可用性,因此,与单机计算相比,分布式计算提供了容错功能。例如,可将数据库备份并维护到网络的不同系统上,以便在一个系统出现故障时,还有其他副本可以访问,从而避免服务瘫痪。尽管不可能构建一个能在故障情况下提供完全可靠服务的分布式系统,但实现系统的最大化容错能力,是开发者的职责。

然而,无论何种形式的计算,都有其利与弊的权衡。分布式计算发展至今,仍然有很多需要解决的问题。分布式计算主要的缺点如下
1)多点故障。

分布式计算存在多点故障的可能。由于涉及多个计算机,且都依赖于网络通
信,因此一台或多台计算机的故障及一条或多条网络链路的故障都会导致分布式系统出现问题。
2)安全性低。

分布式系统为非授权用户的攻击提供了更多机会。在集中式系统中,所有
计算机和资源通常只受一个管理者控制,而分布式系统的非集中式管理机制包括许多独立组织。非集中式管理使安全策略的实现和增强变得更为困难,因此,分布式计算在安全攻击和非授权访问防护方面较为脆弱,并可能会影响系统内的所有参与者。

1.1.3 分布式计算的相关计算形式

1.单机计算

单机计算是最简单的计算形式,即利用单台计算机(如PC)进行计算,此时计算机不与任何网络互连,因而只能使用本计算机系统内可被即时访问的所有资源。在最基本的单用户单机计算模式中,一台计算机在任何时刻只能被一个用户使用。用户在该系统上执行应用程序不能访问其他计算机上的任何资源。在PC上使用的诸如文字处理程序或电子表格处理程序等应用就是单用户单机计算的计算形式。

多用户也可参与单机计算。在该计算形式中,并发用户可通过分时技术共享单台计算机中的资源,我们称这种计算方式为集中式计算。通常将提供集中式资源服务的计算机称为大型机( mainframe computing)。用户可通过终端设备与大型机系统相连,并在终端会话期间与之交互。

  1. 并行计算

并行计算(或称并行运算)是相对于串行计算的概念。最早出现于20世纪六七十年代,指在并行计算机上所做的计算,既采用多个处理器来执行单个指令。分布式计算强调任务的分布执行,而并行计算强调任务的并发执行。

  1. 网络计算

网络计算是一个比较宽泛的概念,随着计算机网络的出现。网络技术的发展,在不同的时代有不同的内涵。网络计算有很多学科领域发挥了巨大的作用。

4.网格计算

网格计算是指利用互联网把地理上广泛分布的各种资源连成一个逻辑整体,就像一台超级计算机一样,为用户提供一体化信息和应用服务。网格计算强调资源共享,任何结点都可以请求使用其他结点的资源。

网格计算侧重并行的计算集中性需求,并且难以自动扩展。云计算侧重事务性应用。大量地单独请求,可以实现自动或半自动的扩展。

5.云计算

云计算这个概念最早由 Google公司提出。2006年, Google高级工程师克里斯托夫·比希利亚第一次提出“云计算”的想法,随后 Google推出了“ Google101计划”,该计划的目的是让高校的学生参与云的开发,为学生、研究人员和企业家提供 Google式的无限计算处理能力,这是最早的“云计算”概念,如图1-3所示。云计算概念包含两个层次的含义:一是商业层面,即以“云”的方式提供服务;二是技术层面,既各种客户端的“计算”都有网络负责完成。

1.2 分布式系统概述

1.2.1 分布式系统的定义

分布式系统是指通过网络互连,可协作执行某个任务的独立计算机集合。这个定义有两方面的含义:第一,从硬件角度来讲,每台计算机都是自主的;第二,从软件角度来讲,用户将整个系统看作一台计算机。这两者都是必需的,缺一不可。

1.2.2 经典的分布式系统与项目

1.www

2.SETI@home

3.BOINC

4.其他分布式计算项目

Climateprediction.net

Quake-Catcher Network(捕震网)

World Community Grid(世界社区网格):

Einstein(@ Home:

FightAIDS@home:研究艾滋病的生理原理和相关药物。

FoldingS

Distributed

1.2.3 分布式系统的特征

1.可靠性

2.可拓展性

3.可用性

4.高效性

5.CAP理论

1.3 分布式计算的基础技术

1.3.1 进程间通信

分布式计算的核心技术是进程间通信,既在互相独立的进程间通信及共同协作以完成某项任务的能力。

基本的IPC机制:两个运行在不同计算机上的独立进程(进程1和进程2),通过互联网交换数据,其中,进程1为发送者,进程2为接收者。

1.3.2 IPC程序接口原形

在可以提供IPC所需的最低抽象层的基本API中,需要提供以下4种基本操作:

l Send(发送)

l Receive(接收)

l Connect(连接)

l Disconnect(断开连接)

1.3.3 事件同步

1.同步send和同步receive

两方只有一方能发送或接收,若有一方在工作另一方会被挂起。
  1. 异步send和同步receive

Ree的要出将辱藏要进程插send操作的拨起不辱政发送选程起在本例中,墩进程永远不会被組寥,因此,进程2所在主机的IPC设施不必发送确认消。
如果发送者的应用逻楫不依赖于另一端的数据接收,则可以使用异步send和同步Receive。然而,根据IPC设施的实现,该方式并不保证已发送的数据都会被实际传送到接收者。比如,四如果send操作在另一蜡相应的receive操作之1秒前执行,数据将有可能不会被传送到接收进程除非ⅠPC设施提供保留已发送数据的机制。

  1. 同步send和异步receive

异步receive操作不会使发出该操作的进程阻塞,运行结果取决于IPC设施的实现。在所有情形下,receive操作都将立即返回,随后产生3种不同的情形。

情形1:receive操作请求的数据在receive操作发出时已经到达,在这种情况下,数据被立即传送到进程2,主机2的IPC设施返回的确认消息将进程1解锁。

情形2:receive操作请求的数据仍未到达;没有数据传递到该进程。接收进程负责确定已真正接收到数据,如果需要的话,重复receive操作,直到数据到达。进程1被无限阻塞,直到进程2重发receive操作请求,并最终收到主机2IPC设施的确认消息。

情形3:received操作请求的数据仍未到达。当请求数据到达时,主机2的IPC设施将通告进程2,此时进程2可以继续处理数据。该情形要求进程2提供一个可以被IPC设施调用的侦听接口或事件号,用于向进程通告请求数据的到达。

  1. 异步send和异步received

如果双方都没有阻塞,数据传送到接收者的唯一途径是由IPC设施保留接收到的数据,接收进程最后被通告数据到达了。

1.3.1 死锁和超时

死锁是由于同步操作时按照错误的顺序执行造成的,会造成进程被无限期挂起。

死锁有两种避免或解决的方法:第一,使用超时机制来设置最大阻塞期限。第二,使用子进程或线程来提供阻塞操作。

1.3.5 事件状态图

时间状态图可以用来记录和表示一协议执行期间详细的事件以及阻塞序列。


版权声明:本文为weixin_52606154原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。