分布式计算
以下内容来自 wikipedia
目录
parallel and distributed computing
分布式计算: 计算机科学中研究分布式系统的领域。
分布式系统: 位于网络计算机上的各成分通过传递信息来通讯和协作它们的行为。 这些成分相互作用以达到一个共同的目的。
其3个显著特征为: 1. 成分的并发(concurrency) 2 缺少一个全局时钟(global clock) 3. 各成分相互独立的失败
例子:SOA-based systems, MMO game , 点对点应用。
在分布式系统中运行的程序称为分布式程序。‘ 信息传递机制有很多可选方法’ ,如:pure HTTP, RPC-like connectors, message queues.
分布式系统里的一个目标和挑战是‘ 位置透明性(location transparency)’, 然而这个目标在工业界由受欢迎变得不受欢迎。
分布式计算也指使用分布式系统解决计算问题。在分布式计算中,一个问题被分解成很多任务,每一个都由一个或多个计算机解决,(它们)通过信息传递彼此通讯。
‘ 分布式’ 这个词最初指这样的计算机网络:独立的计算机物理上分布于一些地理区域。
现在这个词有了更广泛的含义,甚至指在同一个计算机上运行并且通过信息传递相互作用的‘ 自治进程(autonomous processes) ’ 。
关于分布式系统没有唯一的定义,下面几种定义性质通常被使用:
1. 有一些计算实体(计算机或节点),每一个都有局域内存。
2. 实体通过信息传递彼此通讯。
一个分布式系统可能有一个共同的目标,例如解决一个大的计算问题, 使用者将‘ 自治处理路’ 理解为一个单元。
或者,每个计算机有其自身具有独立需求的使用者,分布式系统的目的是协调共享资源或者给使用者提供通讯服务。
其它典型性质:
1. 系统需要容忍独立计算机中的错误;
2. 系统的结构(网络拓扑,网络潜在因素,计算机数量)预先不知道,系统可能包含不同种类的计算机和网络连接,且系统可能在执行分布式程序时改变。
3. 每个计算机对于系统都是有限的,不完全的。每个计算机可能只知道输入的一部分。
parallel and distributed computing
术语 “ 并发计算(cocurrent computing)” " parallel computing (并行计算)" 和“ 分布式计算 ” 有许多重叠,它们之间没有清晰的区别。
同一个系统可能可以同时用“并行” 和“分布” 来表征;
一个典型分布式系统中的处理器 以并行的方式并发地运行(run concurrently in parallel). ——多个核构成并行关系,单独看一个核为并发处理。
并行计算可看作分布式计算的一个特别的紧联结形式(tightly);
分布式计算可以看作是并行计算的松联结形式(loosely);
尽管如此,可以粗略地将并发系统分类为“并行的” 或“分布式” ,按照下面的标准:
1. 并行计算中,所有处理器可能访问一个共享内存来交换彼此的信息;
2. 在分布式计算中,每个处理器有自身的私有内存(分布内存),通过在处理器之间传递信息来完成信息交换。
(a) 为典型的分布式系统,系统用一个网络拓扑表示,每个节点是一个计算机,每条连接节点的线是一个通讯 link
(c) 分布式系统,每个处理器可以直接访问一个共享内存。
As a rule of thumb,
共享内存多处理器中的高性能并行计算使用并行算法;
大规模分布式系统的协作使用分布式算法。
各种硬件和软件架构被用于分布式计算。
低层次地,需要用某类网络互联多个 CPU,而不考虑这个网络印刷到线路板或由松连接设备构成。
高层次地,需要用某种通讯系统互联在哪些CPU上运行的进程。
分布式编程有以下几种基本架构:
1. client-server
2. three-tier
3. n-tier
4. peer-to-peer
5. 并发进程之间的通讯和协调工作
6. database-centric
使用分布式系统和分布式计算的原因:
1. 一个应用的特性可能会要求使用一个通讯网络来连接几个计算机:例如,在一个物理位置产生而在另一个位置被需求的数据。
2. 很多情形原则上使用一个单独计算机是可行的,但是使用分布式系统更加便利。例如
相比于使用一个高端的计算机,使用一个簇或者几个低端计算机来获得想要的性能水平会更有成本效益(more cost-efficient)。
一个分布式系统可以提供更多的可靠性,因为没有单点失败(SPOF)。
一个分布式系统可能更容易扩展和管理。
分布式系统和分布式计算的应用包括:
电信网络:
电话网络和蜂窝网络;
计算机网络如Internet
无线传感网络;
路由算法;
网络应用:
WWW and P2P networks;
MMO game and VR 社会;
分布式数据库和分布式数据管理系统;
网络文件系统;
分布式信息处理系统,如银行系统和 航班系统;
实时进程控制:
飞控系统;
工业控制系统;
并行计算:
科学计算,包括 簇计算,网格计算,各种志愿计算项目;
计算机图形学中的分布式渲染;
模型
许多我们想自动化的任务是 问题-答案 类型:我们问出一个问题,计算机应该产生一个答案。
理论计算机科学中,这样的任务被称为‘ 可计算问题 ’ 。形式上, 一个可计算问题包含实例(instances),且每个实例有一个solution. 实例是可以问的问题,solutions是想要的答案。
理论计算机科学探索哪些可计算问题是可解的及效率如何?
在并发和分布式计算领域,通常使用3个观点:
1. parallel algorithms in shared-memory model
1. 所有处理器可访问共享内存。算法设计者选择被每一个处理器执行的程序;
2. 理论模型: PRAM 并行RAM。 假定同步访问共享内存;
3. 如果底层的操作系统封装节点之间的通讯,并且实际上联合贯穿所有独立系统的内存,那么共享内存程序可以扩展到分布式系统;
4. compare-and-swap 等机器构造,是异步共享内存。
2. parallel algorithms in message-passing model
1. 算法设计者选择合适的网络结构和每个计算机执行的程序;
2. 模型例如:Boolean circuits and sorting networks.
布尔电路可视为一个计算机网络:每个门是一个运行最简单程序的计算机。
排序网络可视为计算机网络:每个比较器是一个计算机。
3. Distributed algorithms in message-passing model
1.算法设计者只需要选择计算机程序。所有的计算机运行相同的程序。系统必须正确工作而不管网络的结构。
2. 常用模型:一个图,每个节点为一个有限态机器。
例子:
考虑计算问题:寻找一个给定图G 的着色(coloring)。
Centralized algorithms
图G编码为一个字符串,作为计算机的输入。程序找到图的着色,将字符串编码为着色,并输出结果。
parallel algorithms
多个计算机可以并行地访问同一个字符串。每个计算机可能关注图的一部分,并且产生这部分的着色。
主要关注于高性能计算;
Distributed algorithms
图G 是计算网络的结构。图G 的每个节点有一个计算机,每天边有一个通讯连接。
刚开始,每个计算机只知道自身的最近邻(immediate neighbor), 这些计算机必须相互之间交换信息来更多地发掘结构。每个计算机必须产生自身的颜色作为输出。
主要关注: 协调一个任意分布式系统的操作。
************************************
尽管并行算法领域和分布式算法领域有一个不同的关注点,两者之间有很多相互作用。
例如: 图着色的 Cole-Vishkin 算法最初作为并行算法提出,但是相同的技巧也可以直接应用到分布式算法。
此外,并行算法既可以在并行系统中执行(使用共享内存),也可以在分布式系统中执行(使用 message passing).
***********************************************
并行算法中,资源除了时间,空间,还有计算机数目。
通常在运行时间和计算机数目之间有一个权衡。
如果一个决策问题可以在多项式时间内由多项式数目的处理器来解决,那么这个问题被称为 NC class. 可以使用 PRAM formalism 或 Boolean circuits 来等价地定义——两者之间可以相互有效模拟。
****************************************
在分析分布式算法时,比起‘ 计算步数’ 我们会更多地关注‘ 通讯操作 communication operations ’.
可能最简单分布式计算模型:是一个同步系统,所有的节点步调一致地操作。在每一轮通讯中,所有节点并行地(1)从邻居接受最新信息 (2)执行任意局域操作 (3) 给邻居发送新信息。 在这样的系统中, 一个重要的复杂度度量为完成任务所要求的同步通讯轮数。
****************************************
复杂度度量和网络的直径(diameter)紧密相连,记为D。
一方面,任意可计算问题可以在同步分布式系统中平凡地解决,其通讯轮数近似为2D: 简单地在一个位置聚集所有信息(D rounds), 解决问题,将解答告知每一个节点(D rounds).
另一方面,如果算法的运行时间远远小于D通讯轮数,那么网络中的节点必须产生输出而绝无可能获得网络其它远离部分的信息。
换而言之,节点必须基于它们‘ 局域邻居’ 中可用的信息做出全局一致的决定。
许多分布式算法的运行时间远远小于 D rounds, 理解哪些问题能够被这样的算法求解是一个核心问题。、
其他问题
有些问题我们并不想让系统停止。如哲学家就餐问题(操作系统)或其他类似的互斥问题。
这样的问题中,分布式系统应该连续协作对于共享资源的使用这样才不会发生冲突和死锁。
分布式计算的挑战
挑战1:容错。
2. 异步特性。
3. 选举算法。
参考资料:
1. Coulouris, George; Jean Dollimore; Tim Kindberg; Gordon Blair (2011).Distributed Systems: Concepts and Design (5th Edition). Boston: Addison-Wesley. ISBN 0-132-14301-1.
2. Lynch, Nancy A. (1996), Distributed Algorithms, Morgan Kaufmann, ISBN 1-55860-348-4.
3. Ghosh, Sukumar (2007), Distributed Systems – An Algorithmic Approach, Chapman & Hall/CRC, ISBN 978-1-58488-564-1.
4.