集群的可扩展性及其分布式体系结构(二)–体系结构比较与可扩展性研究

这篇文章是《集群的可扩展性及其分布式体系结构》的第二篇,主要介绍集群计算中可扩展性的主要意义。本文描述了集群常见的几类体系结构和考量集群时的出发点。通过图表的形式,讨论集群系统中几大重要因素之间的相互关系。同时,作为对比,列出一些和集群在体系结构上具有可比性的一些系统如Mpp,SMP等,通过比较,使读者能够掌握集群在体系结构发展中的地位和意义。

体系结构的发展

过去的几十年里,计算机的发展经历了几代变更。从第一代的真空电子管和继电器存储器计算机到近年以ULSI(超大规模集成电路)为代表的第五代计算机。计算机系统的速度在不断提高,造价和体积却不断减小。系统软件的发展虽然没有硬件系统那么令人瞩目,却也从汇编、机器语言的荒莽时代逐渐步入以跨平台、可扩展、适合分布式计算的第五代编程语言体系。其最主要的代表就是Java,而最有前景的操作系统就是Linux和开放源码运动。今后的计算机系统将是具有更强的能力,更友好的操作界面并借助互联网的分布式超级计算平台。

过去,人们普遍认为计算机性能的提高主要是因为生产出了更快更有效的处理器。这种观念受到了并行处理概念的挑战。分而治之的方法使得聚集(Cluster 的由来)的计算系统能够实现令人咂舌的计算能力。近年来昂贵而特制的并行超级计算机向集群的转换趋势越来越强,而高性能工作站标准化组件和网络部件的快速发展成为促成这种转换的驱动因素。

 


并行与可扩展

 

现代计算机的一个公共特点是并行性。不论是计算机的体系结构还是微处理器的发展方向来看,并行性逐渐体现在每一个可能见到的每一个角落。

x86体系微处理器的发展就是并行技术发展的一个很好的体现:多流水线、超标量设计都是提高CPU的并行能力的关键。而在集群的体系结构中,更是充分利用了并行性这一特点。我们创建和使用并行计算机主要是为了解决单处理器的速度瓶颈,利用并行技术来提高应用性能(通过优化串行程序)。

另一个角度来看,因为并行技术的发展,也大大促进了计算机系统的可扩展性,同时在单位成本控制上也有了可喜的进步,使得基于集群的并行计算系统的性能价格比明显优于独立的计算机系统,比如小型机、和一般的大型主机

 


 

何谓可扩展性

如果能够通过增加资源以满足不断增长的对性能和功能的要求,或者是通过缩减资源,以降低成本,从涵盖硬件和软件的角度上讲,我们可以把符合这种特性的计算机系统称作是可扩展的。

可扩展并不是仅仅意味着体积的扩大、数量的增加,它也涵盖了缩减能力。目前日益多见的嵌入式系统就是很好的一个例子,它既是硬件体积、计算能力的缩减,又是软件的缩减(许多嵌入式操作系统往往通过剪裁而来)。因此,看待扩展问题需要从下面的几个观点入手:

  • 功能性和性能:一个可扩展的系统应该能够提供更好的性能、更多的功能。系统的总体计算能力应该随着资源的增加而按照比例增展。理想的情况是,增长的速度是线性的。
  • 成本伸缩:另一方面讲,系统扩展的代价必须是合理的。粗略的标准是,成本的增加应该小于n或者nlogn的一个线性系数。但是结果往往不尽人意。因为在扩展计算系统的时候,不仅仅要做性能的考虑,而且还要考虑系统的可用性、稳定性等等,这些因素都会导致系统的总成本上升。
  • 可兼容性:包括硬件、系统软件和应用软件在内的组成部分。我们希望用户原有的程序在不作变动或只作少量的变动后仍可以使用,要求用户购买一套全新的操作系统和重新开发他们的应用代码是不合适的。从部件上看,伸缩通常只涉及到系统的一部分,如果添加更多的处理器或者是将现有的处理器升级到新的一代。新增加的部分应能够与系统的其余部分相兼容。这就是说,原有的存储器、磁盘、互联设备以及外设仍然可以使用。

 


 

可扩展系统的意义

研究可扩展的系统,其主要动机在于寻求一个灵活的、成本可伸缩的计算系统架构方案。如这里的图所展示的,计算机种类在由销售量及性能和成本组成的坐标系统中,形成一座金字塔。金字塔的顶部是那些能够提供万亿次以上性能的超级系统,他们把许多资源集成在一个看上去”单一”的系统中,采用顶尖的技术构造并行系统,具有最高的性能。
计算机分类金字塔
计算机分类金字塔

可扩展性通过它所提倡的公共的开放系统结构,包括了所有的计算机类。研究集群的可扩展体系结构,目的就是寻求一种可扩展的框架技术,使得上图中大型系统的高端技术能够不断应用于中低端的产品中,从而不断提高计算机的性能价格比水平。

像早期的Cray巨型机,当时在超级计算领域具有无可匹敌的地位,但是随着可扩展并行技术和商品化组件的发展,当年巨型机的地位逐渐被并行计算集群代替。由于大部分集群都采用了标准化的商品组件,一方面可以充分享受部件性能的增长(CPU、网络、磁盘容量等都以近似摩尔定律的速度增长);另一方面,在构架上也具有很强的灵活性。比起专有的并行平台,以下的好处就显而易见了:

  • 因为单个工作站越来越强大,集群节点的计算能力也日益增强。而个人用户对于工作站的使用率往往很低,这样就有大量的闲置计算资源可以利用。
  • 能够满足对不同性能和成本的要求。比如,用户可以在起初购买一个低端系统。当他对性能地要求增加时,他可以扩展此系统,而原有的软件和硬件部分仍然可以使用,充分保护了他原有的投资。
  • 高端机可以使用低端机的部件以降低成本。例如,由于批量大、PC机使用的是低价的、市场销售的标准件。因为采用的是可扩展系统结构,故超级计算机也能使用这些部件,从而可以降低系统成本。事实上,使用商品化部件:处理器、存储芯片、磁盘、I/O控制器等,已经成为高性能系统开发的趋势。
  • 如果成本有效性能够随着生产技术的改进而增加的话,则为高端系统而开发的顶尖技术可能最终向金字塔下方移动,从而改进低端系统的性能。

 


可扩展性的三个考量

 

可扩展性其本身是一个多方面的概念集合。包括了对计算资源可扩展的考量、对应用规模可扩展的考虑以及对技术换代可扩展三个方面的考虑。

一、资源的可扩展性

考虑资源可扩展性之前,首先要确定资源的真实含义是什么。

我们一般的都会把计算机硬件设备当作资源,比如CPU的数量、存储设备、IO设备等等。但从广义的角度理解,资源还应该包括软件,比如操作系统、应用软件等等。甚至,在日益复杂的互联网应用时代,资源的概念延伸到了用户需求的层次上。

因此对于提供服务的计算机系统来说,其支持为用户提供服务的一切软、硬件和其他配套的结构,都可以看作资源。因此如果我们从资源角度来考量可扩展性,就可以把目标定义为:通过增加机器规模(既处理器数量)、投入更多的存储部件、升级软件甚至是改变系统的体系结构,从而使系统具有更好的性能或者功能。

扩展很容易让人联想到加强硬件设备,其中最明显的方法就是增加机器的处理器的数量。但是不是所有的机器都具备相同的可扩展能力。一个x86的SMP系统最多就只能扩展到64个CPU,;而一台IBM的SP2却可以扩展到最多512个CPU。

因此,扩大规模并不是简单的增加部件的数量就能解决问题的。通常,随着CPU数量的增加,包括RAM、总线带宽、网络等子系统也需要随之增加。所以,我们常常看到,由于资源扩展所带来的技术上的障碍,仅仅是增加几个CPU或者其他部件,所花费的代价却远远高于增加的那些CPU本身的价值。那么,谨慎考虑扩展规模所带来的性能价格比的增加,如何有效的利用更大并行性就是非常必要的了。这时,通过RAM的数量,扩展I/O速度,升级网络速度或者改造网络拓扑结构反而能带来意想不到的效果。

另一方面,把软件也看作系统资源的话,就要涵盖很广的范围:可以升级新版本的操作系统,使他具有更多功能,支持更多线程、更大的地址空间,有更高效的内核,能够识别更多的新硬件;也可以安装功能强大的中间件以扩展系统的特殊能力;还可以利用运行库来支持诸如消息传递、分布式事务处理等特性。扩展的方法不一而足,也是在研究集群技术时主要考虑的问题。

二、应用的可扩展性

要充分扩展集群计算系统的能力,不仅资源是要可扩展的,应用程序也必须是可扩展的。这就是说,相同程序在一个可扩展系统上运行时,其性能随规模的扩大成正比例的改进。两个重要的考量是机器规模的可扩展性和问题规模的可扩展性。

首先从硬件的角度来考虑机器规模可扩展性这个问题。如果增加处理机的数量,我们系统的性能也会随之成比例地提高吗?假设有一个数据库服务器,处理银行每天几十万的交易和1000万个用户的存款数据库,这样的情况下每秒钟该系统能够处理1000个在线事务。如果系统的处理器增加为原来的两倍,其他前提条件不变,它能够提升到每秒2000个在线事务的处理速度吗?如果可以或者是接近的话,我们应当庆幸,该系统具有良好的可扩展性。当然,除了增加处理器的数量,还可以是存储器或者I/O设备等等。

而考虑问题规模可扩展性这个角度则是以硬件环境的相对不变为基础的。如果仅仅是改变应用环境的工作负载,求解更大问题时,系统的性能表现又会如何。仍然以上述的情况为例,如果数据库里的储户数据达到1亿个,每日处理的交易再上升一个数量级,那系统还能够保持每秒1000TPS的性能吗?

在研究应用可扩展问题的时候,我们将会发现:应用的限制最终无法通过简单的增加机器资源的方法加以突破。只有对应用程序本身和系统体系结构进行重大修改后,才能使用更多处理器和处理更多的问题。

我们应该将在一台特定机器上求解一个问题作为组合来加以考虑。有时将这种应用 / 机器对视为一个系统。如果更换应用或者更换软、硬件系统的体系结构,考虑可扩展的标准和角度就有很大的不同。

应用可扩展性不只依赖于处理器规模和问题规模。它也依赖于机器的存储器容量、I/O能力、以及通信能力。所有这些因素一起影响着可扩展性。我们将在今后的篇章讨论这些问题。

总的来说,考虑应用可扩展问题,需要从更加广义的角度上看,而不仅仅是上述的两个方面。那么我们就来看一下可扩展的另一个重要的方面–技术换代的可扩展性。

三、技术换代的可扩展性

技术换代可扩展性是局部概念而非全局概念。这里主要是指计算机系统能够随着技术的变更、换代,在保持原有的可用性基础上,通过”升级”部件的手段提高系统的性能或者功能。这里的升级可能是我们常见的更换更高主频的CPU,也可能是增加系统的内存数量,还可能是升级操作系统到更新的版本。

其实这种事我们在WinTel时代常干,时不时换一下CPU或者内存什么的,但是不影响原来的系统应用,而且往往性能有很大的提升。

总的看来,计算机系统中CPU的发展速度最快,而内存的速度和单位容量的提升就慢一些,硬盘就会更慢(受到机械的限制),而最慢的就数程序设计语言了,到现在为止,我们都还在用类C编写关键的大型系统特别是集群系统应用。

并行系统的空间也是在扩展集群系统时的一个重要考量因素。新的设备是否能够容入原有的机箱内,扩展的需求是否能通过现有的互联技术得到满足,跨地域分布式技术的发展是否能给我们带来更大更强的系统,这些问题都缠绕在技术换代的思考过程中。

并行技术发展初期,系统大都是同构的,像具有完全一致内核的MPP系统,而集群也都是先在同构的框架下实现。而为了更好利用给各类的异构计算资源,势必需要充分支持异构的并行集群。那么,异构可扩展性这一性质就反映了一个系统通过集成由不同设计者和厂商所提供的硬件和软件部分而进行扩展的能力。

异构扩展提倡使用具有标准、开放系统结构和接口的部件。在软件领域,我们也将它称为可移植性。追求异构可扩展性的代价是巨大的。除了借助标准协议和通讯平台消除不同硬件系统之间的巨大差异,还要花费更多的资源处理现有应用的平滑移植。早期的COBOL应用在进行移植的时候就遇到很多问题,以至于现有的系统中还存留大量的这种老式语言,也许Java集群出现会是解决这一问题的一个契机。

可扩展的并行计算体系结构

首先,我们先来看一下计算机系统体系结构发展的几个主要类型。每种体系结构的差别并不大,关键在于互联技术、结点的复杂度和耦合程度的不同。在集群计算和分布式系统中,以下这三种体系结构是比较具有代表性的。

  • 无共享体系结构
    无共享体系结构
    无共享体系结构
    (目前大多数集群采用的方式。每个节点都是独立的PC或者工作站)我们研究的集群系统大多数属于这一类的体系结构。集群的每一个结点都是完整独立的操作系统和硬件设备集合。结点之间通过局域网或者开关阵列以松耦合的方式连接起来,彼此分享结点的部分甚至全部可用资源:CPU、内存、磁盘、IO设备等等,以形成一个对外单一、强大的计算机系统。这类系统对SSI的能力较弱,需要特殊的中间件或者OS扩展加以支持。
  • 共享磁盘体系结构共享磁盘体系结构
    共享磁盘体系结构
    (结点基本上仍是独立的计算机,没有或者不使用本地的磁盘文件系统)
    分布式文件系统正是这类体系结构的应用体现。常见的NFS、AFS或者GFS都属于这个范畴。而硬件上的解决常常通过共享磁盘阵列或者SAN来实现。该体系结构主要能够解决区域存储空间的容量问题,通过构造单一的虚拟的文件系统,提供给整个集群一个巨大的存储设备。尤其在一些高可用的场合,共享磁盘阵列常常能够解决文件系统容错和数据一致等可靠性问题。
  • 共享存储器体系结构共享存储器体系结构(最不易实现,具有较强的SSI能力)
    共享存储器体系结构(最不易实现,具有较强的SSI能力)从实现的难度上讲,不论是硬件制造的复杂性还是软件的实现难度,这种体系结构都大大超过其他几类体系结构的实现。实现这类体系结构的集群系统有DSM(分布式共享存储集群)、NUMA、ccNUMA等技术。在这类体系结构中,可以将多个节点的计算资源集合在一起,形成一个内存空间一致的单一系统。在随后的学习中我们知道,这样的系统具有最好的SSI(单一系统映像)能力。

 


 

可扩展与单一系统映象

我们最终希望,我们所面对的并行集群,不管适用于密集计算还是高可靠商用环境,都要有良好的可扩展性,可接受的单位计算成本,可预期的技术前景。因此,设计一个计算系统特别是并行环境下的集群系统,时时刻刻别忘了可扩展性这一核心的要求。

但我们从另外一个角度来看待并行计算集群的时候,就会有不同的结论了。其实,对于最终用户和编程人员来说,并行计算机模型的重点在于他们所看到的计算机是什么样的,也就是我们通常所称的SSI(单一系统映像)。

如果作为编程者,当然希望自己所面对的是一台机器而不是一堆机器,一台机器意味着单一的寻址空间,无须处理消息传递或者远程调用这样复杂的编程技术。那么,在这样的观点下,具有单一地址空间的集群系统就具备了这个能力;或者使用者希望拥有一个巨大的一致的(只有一个根目录)的文件系统,那就需要在文件系统层次上进行SSI的工作。

但从用户的角度来看,他并不关心你是如何处理诸如地址空间、消息传递这些看起来和他毫无关系的东西,用户只关心他用的是一台独立的计算机系统,这样可以减少他使用的复杂度,不需要在多个系统之间来回切换,可以方便的管理他所面对的”一台机器”。那么,提供管理层次和使用层次的SSI就是必要的了。

所以,并行计算模型就是由使用者(包括程序员、用户)看到的一个抽象并行计算机,和冯氏结构计算机相似,能够进行顺序计算(其背后可能是并行的运算程序)和并行计算任务的计算机系统。

按照处理器、内存、OS以及互联方法来进行并行系统的分类,在参考彼此可扩展性和单一系统映像的这两个方面,我们能够得到下面的图形:

集群、分布式系统、MPP、SMP的体系结构比较集群、分布式系统、MPP、SMP的体系结构比较

上图中,节点可以是一台PC、一台工作站或者SMP服务器。节点的复杂性指的是软件和硬件的能力。一般来说,集群节点要比MPP复杂一些,因为每个集群结点都有独立的操作系统和外围设备,而MPP中的结点可能仅仅是操作系统的一个微内核。

SMP服务器的节点复杂性和PC以及商用集群相比,相对高一些。拿最常见的x86构架SMP服务器来说吧,不但主板、总线技术都远远比PC复杂。而且为了支持企业级应用环境,SMP还需要支持更多的高端外设,提供存储设备的热拔插能力,内存数据纠错等等高端技术,这些技术的应用势必增加SMP的复杂程度。

MPP通常是指采用无共享资源结构的大型并行处理系统,一般包括几百个处理器节点,节点一般运行一个不完整的OS(也叫微内核),结点之间通过高速开关互联。这样的专有系统往往具有比较好的可扩展能力,但是在技术换代上受限于专有系统本身。

SSI作为集群实现的一大要素,其范围包括了单一的应用层次、子系统,运行时系统、操作系统内核以及硬件层次。或者说,SSI不是绝对的,是一个相对的概念,取决于用户从什么样的角度看待系统,是IP层面上还是内存空间上或者是文件系统的SSI,这都由最终的应用环境决定。

到了分布式系统的这个范畴,系统往往提供多个系统映象,呈现出一个多入口、多映象的系统集合,每个节点具有很高的自治能力。而MPP、SMP则以紧凑的方式提供相对单一的计算资源,如同一个巨大的工作站。在分布式系统中,除了使用同构结点外,还根据需要常常使用异构的平台,这势必增加分布式系统的设计难度和管理复杂性。其他特性见下表:

特征 MPP SMP 集群 分布式系统
结点个数 100~1000数量级 10~100数量级 100左右的数量级 10~1000以上数量级
结点复杂性 细粒度到中粒度 中或粗粒度 中粒度 大范围
结点间通信 消息传递或者共享变量 共享存储器 消息传递 共享文件、RPC、消息传递
任务调度 主机单一队列 单一运行队列 多队列协同运行 独立的运行队列
单一系统映像 部分支持 支持完全的SSI 某一层次支持 目前不支持
结点操作系统 一个主要的内核和多个微内核 独立的完整的OS N个同类OS 同类OS或异构OS
地址空间 多/单地址空间(分布式共享内存) 单一
系统可用性 低或中 高或者容错 中等
归属单位 一个组织 一个组织 可以多个组织(复用) 多组织
连接距离 紧耦合,在一个物理空间内 紧耦合,在一个机箱内 松耦合,楼区范围(依赖于连接介质) 松耦合,跨地域(地区或国家)

 

各类并行系统的比较

对于这四类系统来说,SMP的SSI程度最高,它是在所有的层次上提供SSI,即共享一切系统资源:单一地址空间、单一的文件系统、单一的操作系统内核等等,看起来和一台单独的单CPU没什么两样。MPP仅仅在某些应用层和系统层支持SSI。集群提供的SSI程度更低,一般只能满足某一两个方面的SSI要求。而对于分布式系统,比如网格,其SSI的实现程度就低的多了。通过类似JAVA这样的跨平台工具,分布式系统或许可以提供某一定义下的SSI能力,比如单一的JAVA运行空间。

 


 

集群的重要指标

对于集群,我们可以得到这样的一个简单的概念:集群是全体计算机(也叫节点)的集合,这些计算机由高性能网络或者LAN物理的相连。典型的情况下,每个计算机结点可以是一台SMP一台工作站或者是最普通不过的PC。最重要的是,这些各自独立的计算机要能够同心协力一起工作,而且在”外”看上去是单一的集成的计算机资源。

如果只是简单的用LAN把集群连接起来,就称之为集群,是不可能具备实用价值的。考察集群很重要的是看待集群的几个性能、功能指标。

能用性:由于集群中的每个节点都是运行传统平台,故用户能在熟悉和成熟的环境中开发和运行他们的程序。通用平台提供编程环境、操作界面、控制监控系统的工具甚至是GUI,允许用户们运行他们原来在工作站上的大量程序而无需修改。所以,我们可以把集群系统看作一个大型的工作站,作为使用者,和平时操作没什么两样,只是性能提高了许多。

可用性:可用性是指一个系统从事生产性使用的时间百分比(MTBF平均无故障时间)。传统的整体系统,比如主机系统和容错系统依靠昂贵的定制设计来实现高可用性。集群不使用定制组件,而使用廉价的商品化组件以提供高可用性,而高度的设备冗余则是集群最常使用的方式:

  • 处理器和存储器:集群有多个处理器和存储器部件,当某个部件失效时,其他的仍然可以使用,不影响集群整体的运行。与此相反,在SMP中,由于处理器通过共享存储器和总线通信,所以存储器一旦失效将会导致系统崩溃。存储器就成了SMP的”单点失效”。
  • 磁盘阵列:我们常见的RAID 0或者5,都能够满足计算机的磁盘冗余容错需求。在集群中,往往使用多个局部磁盘,通过标准的共享协议(NFS,IFS等)以支持容错需求。当某个节点的本地磁盘失效时,可以通过远程磁盘继续运行。常见的有NAS设备,一种专用于集群网络存储的磁盘设备。或者借助分布式文件系统软件,实现多个集群节点之间的磁盘容错。
  • 操作系统:一般的说,集群在某一层次上体能够实现单一系统映像。但是多个操作系统映像还是存在的,每个节点都有一个独立的操作系统。当某个节点因为软件或硬件故障而崩溃,其他的节点仍然不受影响继续工作,而整个集群也和原先没有什么两样。我们有时也把这一特性叫做”节点容错能力”。
  • 通信网络:好的集群设计充分考虑了各种可能出现的故障情况,并采取一切可行的措施加以避免。集群结点的通信故障也是必须考虑的。在一个大型的复杂的集群中,一段通信链路的故障可能导致不止一个的节点失效,甚至会使得整个集群变得不可用。因此,在集群的关键点之间采取合适的冗余链路就非常必要了。一般考虑到集群的入口节点、主控结点、或者监视节点比较容易成为单点失效,那么在这些节点的接入策略中,使用备份链路可以达到比较好的效果。

可扩展性:一个集群的计算能力随结点增多而增加。其次,集群的可扩展性是群体可扩展性。因为是松耦合的结构,集群能扩展至几百个结点,而对于SMP来讲,要超过几十个结点就非常困难。

在SMP中,共享存储器以及存储器总线是系统性能的瓶颈。相同的程序集运行于集群时,不存在存储器瓶颈。每个结点可在一个结点上执行,充分使用局部存储器。对于这类应用,集群可提供更高的总体存储器带宽和减少存储器时延。集群的局部磁盘也聚集为大磁盘空间,可容易地超过集中式RAID磁盘空间。增强的处理、存储和I/O能力使得集群只要使用经良好开发的、如PVM或MPI那样的并行软件包,就可求解大型应用问题。

SMP不具有高可扩展能力,因为它使用竞争总线和集中式共享存储器。单操作系统映像及共享存储器是两个潜在的单失效点,会降低SMP的可用性。

容错系统有极高的可用性,但扩展的代价昂贵。而MPP的扩展能力要更强一些,而且可以保持比较好的SSI能力。目前,集群处于相对折衷的位置,将向着更高性能更高可用性的方向扩展。

性能价格比:集群能成本有效的获取上述优点。传统的超级计算机以及MPP的成本很易达到几千万美元。与此相比,具有相同峰值性能的集群价格则要低1到2个数量级。集群大量的采用商品化部件,他们的性能和价格遵循摩尔定律,从而使集群的性能/成本比的增长速率远快于MPP。

可用性与可伸缩性的综合比较
可用性与可伸缩性的综合比较

设计一个具有良好的扩展集群系统,就要兼顾上述的方方面面。

首先尽量使集群的各个组成部件相互独立,以使独立的局部扩展成为可能,并且保证向后兼容的特性。还要尽可能采用商品化的组件,包括OS、互联网络、主机系统甚至是应用编程环境。最终实现:算法独立于体系结构、应用独立于平台、语言独立于机器、结点独立于网络。

其次就是选择合适的实现模型来进行集群系统的设计任务,尽量使用流行的开放的标准件,以降低单位成本。

最后,在设计的时候还要尽量平衡性能,避免系统里出现的”木桶原理”(众所周知,木桶的装水量受限于木桶最短的那块木板);此外在考虑可用性的时候也要注意单点失效的问题,以免实际应用中因为小的错误导致整个系统不可用。

那么,让我们来看一下经过一番讨论之后,我们所期望的集群是什么样子的。

 


 

结束语

我们之所以花费大量的篇幅介绍集群的几个重要的体系结构概念,是因为这些概念构成了集群的最终整体。最后就让我们来看一下,综合了上述的方方面面后,我们可以得到以下几点关于集群的要素:

  • 独立的结点:每个节点是一台完整的计算机,一般是单一的系统。
  • 单一系统映像能力:一个集群是一个单一的计算资源。集群将结点作为单独的资源,借助于单一系统映像技术,实现统一资源单一入口的概念。SSI使得集群更加易于使用和管理。
  • 有效的结点间连接:集群中的结点,通常使用商品化网络,如以太网、FDDI或者光纤、ATM等等。此外,还使用标准的网络协议以建立进行节点间的通讯机制。这些都保证集群通信的有效进行。
  • 增强的可用性:集群化提供了一个成本有效的方法以增加一个系统的可用性,比起主流的部件级容错产品,集群往往能够提供更合理的花费以达到效果。商用领域多数以加强系统的可用性为设计目标,因此可以使用集群中的技术加以实现。
  • 更好的性能:平心而论,集群的诞生多少是因为性能驱动所促成的。在科学计算、工程应用、远程虚拟现实仿真等服务领域中,集群应该能够提供更高的性能,允许将集群作为超级服务器使用,在最短的时间内完成原本单机系统无法顺利完成的任务,或者是提供巨大的磁盘和内存空间,实现那些”不可能的任务”。

参考资料

  • Scalable Parallel Computing Technology ,Architecture , Programming Kai Hwang Zhiwei Xu
  • Cluster Computing White Paper Mark Baker
  • High Performance Cluster Computing Architectures and Systems Volume 1 Rajkumar Buyya

 

发表回复