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

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

    博客分类:
  • java
阅读更多

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

体系结构比较与可扩展性研究(下)

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

将此页作为电子邮件发送

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

级别: 初级

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

2001 年 11 月 01 日

这篇文章是《集群的可扩展性及其分布式体系结构》第二篇的下半部分,将继续介绍常见的几类并行计算体系结构、可扩展与单一系统映象、集群的重要指标等内容。
<!----><!----><!---->

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

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

  • 无共享体系结构
    无共享体系结构
    无共享体系结构
    (目前大多数集群采用的方式。每个节点都是独立的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等等。此外,还使用标准的网络协议以建立进行节点间的通讯机制。这些都保证集群通信的有效进行。
  • 增强的可用性:集群化提供了一个成本有效的方法以增加一个系统的可用性,比起主流的部件级容错产品,集群往往能够提供更合理的花费以达到效果。商用领域多数以加强系统的可用性为设计目标,因此可以使用集群中的技术加以实现。
  • 更好的性能:平心而论,集群的诞生多少是因为性能驱动所促成的。在科学计算、工程应用、远程虚拟现实仿真等服务领域中,集群应该能够提供更高的性能,允许将集群作为超级服务器使用,在最短的时间内完成原本单机系统无法顺利完成的任务,或者是提供巨大的磁盘和内存空间,实现那些"不可能的任务"。


分享到:
评论

相关推荐

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

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

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

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

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

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

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

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

    websphere application server 7 集群安装

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

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

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

    详解Linux服务器集群.docx

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

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

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

    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)。 在一个...

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

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

    大数据学习计划.pdf

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

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

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

    onos:用于分析的ONOS源代码

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

    数据库系统服务器解决方案.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:开放网络操作系统

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

    大数据期末知识点总结.pdf

    可伸缩性: 可伸缩性: ⼜称可扩展性,是指通过扩展系统规模来提⾼性能并处理更⼤数量的⽤户和通过扩展系统规模提⾼系统的容错能⼒等 横⾏扩展: 横⾏扩展: 向逻辑单元之外的扩展,增加更多逻辑单元的资源,并使...

Global site tag (gtag.js) - Google Analytics