并行系统与分布式系统区别

今天的分布式老师给了道exercise,分布式计算与并行计算以及分布式系统与网络系统之间的区别,这个问题的答案貌似就是为什么后悔选这门课的原因:

分布式计算:研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,这些部分是相互独立的,最后把这些计算结果综合起来得到最终的结果。最近的分布式计算项目(伯克利)已经被用于使用世界各地成千上万位志愿者的计算机的闲置计算能力,通过因特网,可以分析来自外太空的电讯号,寻找隐蔽的黑洞,并探索可能存在的外星智慧生命等(老师上课讲的就是这个例子)。

并行计算:从字面意义上讲,是要区别与串行计算的,从实现方式上讲,可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术(借鉴的是工业生产过程中的流水线技术,在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水),而空间上的并行则是指用多个处理器并发的执行计算,目前计算机中使用的多核技术就是这样。

其实对于并行计算,我最关注的还是大数据处理的方面的计算,这也是当时误选这门课程的原因。目前大数据时代的发展,使得,为了能够有效的从海量数据中提取有价值的信息,人们开发了多种计算模式,有效的整合人类的现有的计算资源,从最开始的集群计算(cluster computing),到网格计算(Grid computing)再到现在的云计算(cloud computing),都是有效整个人类计算资源的一种手段,对于海量数据的计算则是通过并行计算的方式完成的。最有名的也是我比较关注的技术就是类似于Mapreduce这种的并行计算的框架了,MapReduce很明显的体现了“分而治之”的分治法思想,Map的目的是把一个复杂的问题,分解成多个子问题,独立处理,Reduce操作又是合并的操作的,化繁为简在这里得到了体现。有很多大牛给过各种定义,也有各种教程,暂不叙述了。

说到这里,感觉还是没有说明白分布式计算和并行计算之间的区别,现借鉴某牛的说法,简要述之:(1)简单的理解,并行计算借助并行算法和并行编程语言能够实现进程级并行(如MPI)和线程级并行(如openMP)。而分布式计算只是将任务分成小块到各个计算机分别计算各自执行。(2)粒度方面,并行计算中,处理器间的交互一般很频繁,往往具有细粒度和低开销的特征,并且被认为是可靠的。而在分布式计算中,处理器间的交互不频繁,交互特征是粗粒度,并且被认为是不可靠的。并行计算注重短的执行时间,分布式计算则注重长的正常运行时间。分布式计算是一个比较松散的结构,并行计算则是各节点之间通过高速网络或其它总线之类的东西连接。因此并行计算一般在企业内部进行,而分布式计算可能会跨越局域网,或者直接部署在互联网上,节点之间几乎不互相通信。(借鉴某牛说法)(3)联系,并行计算和分布式计算两者是密切相关的。某些特征与程度(处理器间交互频率)有关,而我们还未对这种交叉点(crossover point)进行解释。另一些特征则与侧重点有关(速度与可靠性),而且我们知道这两个特性对并行和分布两类系统都很重要。(4)总之,这两种不同类型的计算在一个多维空间中代表不同但又相邻的点。有种死扣概念的感觉,最重要的分清前两点就行。

”分布式系统与网络系统“这组概念的对比,网上资源比较多,简要来说:分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。网络系统的主要作用是使得计算机与计算机之间存在信息通讯的可能,而在计算机与计算机之间的通讯变为可能之后,计算机与计算机之间又怎么来进行合作就变成了分布式系统需要解决的事情了。好的分布式系统可以利用计算机之间的协作达到最大程度的利用资源和避免灾难的作用,这就好比一根筷子可以被轻易的折断,而一把筷子要被折断的时候就不是单纯力量的乘法计算而得了。当然,这只是分布式系统的从风险优势上的一个看法,还有更多的有益的方面需要人们继续的探索。人与人团结起来力量会变大,而计算机与计算机团结起来,力量是不是也会变得更大呢? 


你可能感兴趣的:(Distributed,Computing,System)