第一章 分布式计算概述

第一章 分布式计算概述

1.1 分布式计算的概念

不管是网络、内存、还是存储的分布式,它们最终目的都是为了实现计算的分布式:数据在各个计算机节点上流动,同时各个计算机节点都能以某种方式访问共享数据,最终分布式计算后的输出结果被持久化存储和输出。 分布式作为分布式系统里最重要的一个能力和目标,也是大数据系统的关技术之一。经过多年的发展与演进,目前业界已经存在很多成熟的分布式计算相关的开源编程框架和平台供我们选择。
分布式计算是一门计算机科学,主要研究对象是分布式系统。在介绍分布式计算概念前,首先简单了解一下什么是分布式系统。简单地说,一个分布式系统是由若干通过网络互联的计算机组成的软硬件系统[1],且这些计算机互相配合以完成一个共同的目标(往往这个共同的目标称为“项目”)。
分布式计算指在分布式系统上执行的计算。分布式计算是将一个大型计算任务分成很多部分分别交给其他的计算机处理,并将所有的计算结果合并为原问题的解决方案。这里与并行计算不同的是,并行计算是使用多个处理器并行执行单个计算。

1.2 分布式计算的优缺点

优点:低廉的计算机价格和网络访问的可用性、资源共享、可伸缩性、容错性。
缺点:多点故障、安全性低。

1.3 分布式计算的相关形式

1.单机计算是最简单的计算形式,即利用单台计算机进行计算,此时计算机不与任何网络互连,因而只能使用本计算机系统内可被即时访问的所有资源。
2.并行计算是相对于串行计算的概念,最早出现于20世纪六七十年代,指在并行计算机上所做的计算,即采用多个处理器来执行单个指令。
3.网络计算是一个比较宽泛的概念,随着计算机网络而出现,网络技术的发展,在不同时代有不同的内涵。
4.网格计算是指利用互联网把地理上广泛分布的各种资源连成一个整体 ,就像一台超级计算机一样,为用户提供一体化信息和应用服务。
5、云计算这个概念最早有google公司提出。2006年,google高级工程师克里斯托夫·比西利亚第一次提出了云计算的想法,随后google推出了google101计划,该计划的目的是高校的学生参与云的开发,为学生、研究人员和企业家提供google式的无限计算处理能力。

第一章 分布式计算概述
图1.1 云计算概念提出者及云计算概念示意图

1.4 分布式系统概述

分布式系统是指通过网络互连,可协作执行某个任务的独立计算机集合。这个定义有两方面的含义:第一,从硬件角度来讲,每台计算机都是自主的;第二,从软件角度来讲,用户将整个系统看作一台计算机。这两者都是必需的,缺一不可。第一章 分布式计算概述
图1.2分布式系统示意图
如图1.2所示,一个分布式系统一般是由多个位于不同位置的网络上计算机组成的系统,这些计算机通过网络产地消息与通信,从而完成一个共同的目标。

1.4 分布式系统的特征

可靠性:指一个分布式系统在它的某一个或多个硬件的软件组件造成故障时,仍能提供服务的能力。
可扩展性:指一个系统为了支持持续增长的任务数量可以不断扩展的能力。
可用性:指一个系统尽可能地限制系统因故障而暂停的能力。
高效性:指一个分布式系统通过分散的计算资源来实现任务执行的高效率。

1.5 分布式计算的基础技术

1.进程间通信
分布式计算的核心技术是进程间通信(interprocess communication,IPC),即在互相独立的进程(进程是程序的运行时表示)间通信及共同协作以完成某项任务的能力。
在分布式计算中,两个或多个进程按约定的某种协议进行IPC,此处协议是指数据通信各参与进程必须遵守的一组规则。在协议中,一个进程有些时候可能是发送者,在其他时候则可能是接收者。当一个进程与另一个进程进行通信时,IPC被称为单播(unicast);当一个进程与另外一组进程进行通信时,IPC被称为组播(multicast)。
2.IPC程序借口原型
在可以提供IPC所需的最低抽象层的基本API中,需要提供以下4种基本操作:
发送(Send)。该操作由发送进程发起,旨在向接收进程传输数据。操作必须允许发送进程识别接收进程和定义待传数据。
接收(Receive)。该操作由接收进程发起,旨在接收发送进程发来的数据操作必须允许接收进程识别发送进程和定义保存数据的内存空间,该内存随后被接收者访问。
连接(Connect)。对面向连接的IPC,必须有允许在发起进程和指定进程间建立逻辑连击的操作:其中以进程发出请求连接操作而另一进程发出接受连接操作。
断开连接(Disconnect)。对面向连接的IPC,该操作允许通信的双方关闭先前建立起来的某一逻辑连接。
3.事件同步
IPC中的一个主要难点是进行IPC的各相关进程是独立执行的,各进程不知道对方进程的情况。协议涉及的双方必须按特定顺序发起IPC操作,否则可能通信失败。
因此,参与通信的两个进程需要同步他们的操作,由一方发送数据,另一方则需要等待所有数据发送完成时,开始接收数据。
IPC设施提供事件同步的最简单的方法是使用阻塞(blocking)机制或同步(synchronous) ,即挂起某一进程的执行,直到该进程发起的某个操作执行结束。
另外,IPC操作可以是异步(asynchronous)或非阻塞操作(nonblocking)。进程发起的异步操作不会引起阻塞。因此,一旦向IPC设施发出异步操作后,进程可以继续执行。当该异步操作完成后,进程才会随后得到IPC设施的通知。