`
76052186
  • 浏览: 35274 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

集群的可扩展性及其分布式体系结构(2)-上

    博客分类:
  • java
阅读更多

集群的可扩展性及其分布式体系结构(2)-上

developerWorks
文档选项
<noscript></noscript>
将此页作为电子邮件发送

将此页作为电子邮件发送

<!----><!---->
<!---->

级别: 初级

林凡 (iamafan@21cn.com), 研发部经理, 辰讯软件工作室

2001 年 11 月 01 日

这篇文章是《集群的可扩展性及其分布式体系结构》的第二篇,主要介绍集群计算中可扩展性的主要意义。本文描述了集群常见的几类体系结构和考量集群时的出发点。通过图表的形式,讨论集群系统中几大重要因素之间的相互关系。同时,作为对比,列出一些和集群在体系结构上具有可比性的一些系统如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集群出现会是解决这一问题的一个契机。

分享到:
评论

相关推荐

    集群系统的可扩展性及其分布式体系结构

    这个资料非常有价值。linux集群资料市面上很少,有价值的也很少。这个也是网上找来的。版权归原作者。大家共享学习。感谢作者。

    集群的可扩展性及其分布式体系结构(2)-下

    本文内容包括:可扩展的并行计算体系结构可扩展与单一系统映象集群的重要指标结束语参考资料这篇文章是《集群的可扩展性及其分布式体系结构》第二篇的下半部分,将继续介绍常见的几类并行计算体系结构、可扩展与单一...

    集群的可扩展性及其分布式体系结构(1)介绍

    作者将侧重就集群的可扩展性及体系结构分析、原理论、集群的考量、具体的分析案例(LVS、beowulf、MOSIX)、集群高可用技术、分布式文件系统等等各个方面为您更加深入的介绍集群系统。本文是第一篇。主要阐述集群...

    论文研究-基于FastCGI的分布式集群WebGIS研究.pdf

    针对当前网络地理信息系统(WebGIS)中存在的效率问题和服务器端压力过大的问题,...结果表明,相比于当前其他模式的WebGIS,基于FastCGI多进程、分布式集群构建的WebGIS具有效率更高、可扩展性更强、稳定性更好的特点。

    websphere application server 7 集群安装

    通过集群可以实现可扩展性(服务更多客户,提高吞吐量),负载均衡(平衡负载资源,使资源得以有效利用),高可用性(提供故障恢复和补偿机制,在关键性业务中提供容错功能)。WAS ND提供水平集群和垂直集群两种形式...

    大型分布式网站架构设计与实践.带目录书签.完整版.rar

    在大型网站架构的演变过程中,集中式的架构设计出于对系统的可扩展性、可维护性以及成本等多方面因素的考虑,逐渐被放弃,转而采用分布式的架构设计。分布式架构的核心思想是采用大量廉价的PC Server,构建一个低...

    用于嵌入式向量高效相似性搜索的分布式系统-Golang开发

    体系结构数据模型空间,文档,向量,标量组件M概述Vearch是一个可扩展的分布式系统,用于深度学习向量的高效相似性搜索。 体系结构数据模型空间,文档,向量,标量组件主服务器,路由器和PartitionServer主服务器...

    详解Linux服务器集群.docx

    图:集群的体系结构 为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,集群采用三层结构,其体系结构如图所示,三层主要组成部分为: 负载调度器( ),它是整个集群对外面的前端机,...

    sxapi-demo-openshift-couchbase:由在openshift PAAS上后端支持长沙发集群的多个sxapi微服务组成的示例应用程序

    使用,通过管理并与内嵌CI / CD +安全和管理功能超层,您将学习如何使用最新的技术,在智能和分布式架构上运行可扩展性,弹性和安全应用。 您还将发现一个对于使用微服务体系结构创建简单和可扩展的API很有用。 ...

    autodist:在TensorFlow上进行简单的分布式深度学习

    AutoDist提供了一个用户友好的界面,以可扩展性和最少的代码更改在许多GPU上分布各种深度学习模型的培训。 介绍 与专用的分布式ML系统不同,AutoDist的创建是为了以优异的全面性能加快各种DL模型的速度。 AutoDist...

    json-scada:以MongoDB数据库服务器为中心的便携式可扩展SCADAIoT平台

    {json:scada} 以MongoDB数据库服务器为中心的便携式可扩展SCADA / IoT平台。使命宣言通过利用主流开源IT工具提供易于使用,功能齐全,可扩展的便携式SCADA / IoT... 模块化分布式体系结构。 轻量级冗余数据采集节点

    matlab导入excel代码-StockSharpMono:[StockSharp]交易所交易自动化的体系结构

    [Voltdb]内存中的数据存储体系结构具有分布式的概念 VoltDB 3.0数据库是在Ingres和PostgreSQL项目的创始人之一Mike Stonebraker的领导下开发的。 VoltDB具有水平可伸缩性,并且专注于实时事务处理(OLTP)。 在一个...

    大数据学习计划.pdf

    2、 搭建多节点、可扩展集群; 部署 HDFS HA 架构; 理解并实现 Hadoop YARN 的多 租户架构 掌握 Zookeeper 组件原理; 掌握 Hadoop 集群优化路径; 3 传统数据仓库在⾯对更⼤规模数据时显得⼒不从⼼,在寄希望于⼤数据...

    可扩展的Bootstrap集群以处理海量数据

    此外,BLBC适用于在经常用于处理大型数据集的现代并行和分布式计算体系结构上的实现。我们通过实证研究BLBC的性能特征,并通过对模拟数据和真实数据的实验与现有方法的性能进行比较。 结果表明,BLBC在保持良好统计...

    数据库系统服务器解决方案.doc

    可扩展性 11 2.3.4. 可管理性 12 2.3.5. 可靠性、稳定性 12 3. 数据库系统案例 12 3.1. 小规模数据库解决方案:电子图书馆 12 3.1.1. 背景 12 3.1.2. 分析 13 3.1.3. 方案设计 13 3.2. 中等规模数据库解决方案(某...

    onos:用于分析的ONOS源代码

    通过群集和网络设备控制分片的可扩展性。 性能对于第一个发行版来说是好的,并且具有将继续支持改进的体系结构。 全局网络视图,网络图和应用程序意图的北向抽象。 向南可插拔,以支持OpenFlow和新协议或旧协议...

    nms-aware-onos:支持NMS的ONOS实施

    性能对于第一个发行版来说是好的,并且具有将继续支持改进的体系结构。 全局网络视图,网络图和应用程序意图的北向抽象。 向南可插拔,以支持OpenFlow和新协议或旧协议。 图形用户界面,用于查看多层拓扑并检查...

    java开源包2

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

Global site tag (gtag.js) - Google Analytics