集群的可扩展性及其分布式体系结构(1)介绍 |
级别: 初级 林凡 (iamafan@21cn.com), 研发部经理, 辰讯软件工作室 2001 年 11 月 02 日 这是一个新的关于集群技术的专栏。作者将侧重就集群的可扩展性及体系结构分析、原理论、集群的考量、具体的分析案例(LVS、beowulf、MOSIX)、集群高可用技术、分布式文件系统等等各个方面为您更加深入的介绍集群系统。本文是第一篇。主要阐述集群起源的概念,分布式系统的定义和目标体现。作者通过一个故事讲述了考虑集群解决方案时需要注意的是:如何正确看待集群,应该从什么角度来考察一个集群系统。解决了集群的这一根本性立场和观点角度,才能利用集群的技术解决现实问题。<!----><!----><!----> "话说天下大势,分久必合,合久必分"高端计算的体系结构发展正是遵循着这样一个规律。从金融、电信等大行业的数据集中处理到分布计算处理,再到二次集中和海量计算,趋势和应用显然是在变化,作为技术本身,分区和群集技术正是为适应不断变化的需要而产生的。 分区技术初始于大型主机时代。企业级用户在购买大机后,许多应用都只使用大机的一小部分资源。这时,如果一个企业的生产部门只需要使用这台机器的10%的资源,而且需要比较好的安全性,那么分区技术就能够满足它的要求,将主机的部分处理器和系统资源隔离出来,只利用这些资源组织计算系统,供生产部门使用,其他的计算资源不受任何影响。这是早期的物理分区的概念。分区技术发展到今天,并不只为大型主机服务,因为分布式计算的应用在不断地扩展,在许多方面,高性能的UNIX服务器和IA架构服务器已经在慢慢地取代大机的位置,分区这项技术在这些领域中也有着重要的作用。 分区带给人们的是更高的投资回报率和使用率,更加灵活的应用水平,以及动态地使用和分配资源。这些特点通过不同的分区种类来实现,目前分区的种类越来越多,而且越来越细致,更倾向于客户的应用。最典型的分区技术就数我们在PC上使用的多操作系统了,这属于本地物理分区的范畴。而在多机环境中,通过分区可以将不同"种群"的计算机分割开来(即使几台计算机位于同一个物理位置也可能服务于不同的"种群"),被分区的计算机还可以在不同的层面上复用,以提高计算机系统的利用率。最常见的情况莫如VPN了,借助安全协议,VPN可以把分散的远程的计算机系统集合成一个逻辑上的"局域网",协同完成复杂任务并保证远程通信的安全;而这些计算机可能同那些物理上相近的计算机(比如同一个办公室)再次合并为一个机群,利用空闲时间完成另外一些实时性不高的计算任务。 集群技术是一种计算机系统之间连接的方式,运用它可以将分散的计算系统连接起来完成原来单独节点的计算系统无法完成的任务,最早的集群系统就是出于这样的并行处理的目的出现的。但是随着计算机性能的发展和网络不安全因素的出现,系统的稳定性和可靠性是人们主要面临解决的问题。人们开始使用集群方式将两台以上的设备连接起来,当整个集群系统中发生单点或者局部多点故障时,集群中其他的计算机将自动来接替出故障设备。最典型的例子就是实现双机热备份。两台一样的计算机系统,使用集群软件连接起来,其中一台作为另一台的备份,当主机系统崩溃时,另一台来接替它的任务。除此以外,利用集群系统的高并行性能进行复杂的科学、工程计算,也是非常有经济价值的做法。 对于集群系统来说,计算机的架构是一个非常重要的问题。同种架构的计算机之间,可以比较容易实现集群连接,一般来讲都是由厂商提供的集群软件。对于异构的计算机系统,一般没有特别多的选择,目前类似JAVA的中间件技术可以解决部分跨平台的问题。集群技术可以有效地解决开放系统的稳定、抗压和负载平衡问题。
以往,企业用户在构建信息应用系统时只能在两种计算体系中进行选择,一是基于主机的计算体系,大体上采用的就是我们上面描述的分区方式;另一就是基于客户机/服务器的群集型计算体系。基于主机的计算体系具有良好的系统可伸缩性、可靠性和高性能,但它昂贵的价格迫使用户在系统建设之初就在硬件系统上投入巨大资源,而用户花费巨额资金购买的主机系统也许包含了不少并不需要的功能,造成资源浪费。基于客户机/服务器的群集型计算体系允许用户根据实际需要逐步增加硬件系统,但这种体系的系统毕竟不是真正意义上的集群,缺乏必要的可用性和可管理性,在应用升级和管理方面都需要用户付出巨大的代价,每增加一个服务器/客户端的连接就要同时增加两端的管理负担。 因此,未来对计算速度、系统可靠性和成本实效性的要求必将促使发展另外的计算机模型来替代上述的计算模型。随着计算机网络的出现,一个新的具有更高性能/价格比的体系逐渐成为应用主流--分布式集群计算体系。当用户需要完成任何任务时,分布式集群计算提供了尽可能多的计算机处理能力和数据的透明访问能力,同时实现高性能与高可靠性的目标。 集群计算模式是最经济的计算模式。集群系统允许用户把普通商用硬件系统组成机群,并根据需要随时在机群中增加新的硬件,提高系统的伸缩性和可用性,从而能够在价格相对低廉的中低端平台上享用过去只有高端系统才具备的高可伸缩性和高可用性,既提高了系统的性能,同时也降低了成本,实现了更多的计算机=更快速度的目标。 人们对集群计算的兴趣日益增加。集群计算的主题是多种多样的,许多研究人员正在研究有关分布式硬件体系结构和分布式系统软件设计的各方面问题以开发利用潜在的集群并行性和集群可用性。 集群计算系统(或叫做分布式系统)多种多样并涉及不同的系统体系结构。对一些用户来说,一个集群系统是为解决单个问题而紧密结合在一起工作的多处理机的集合。对另一些用户来说,一个集群系统可能意味着一个由地理上分散的各自独立的处理机组成的计算机网络,这些处理机连接在一起以实现对不同资源的共享。 然而,集群这个词在计算机系统中被如此广泛应用以至于它的使用变得有点贬值。许多这方面的混乱来源于缺乏对物理的分布和逻辑的分布的区分。通过区分这两个概念,就可以更准确地描述一个分布式系统的属性。 对于分布式集群系统,我们使用以下 定义:在用户看来,一个集群系统是一个单一的普通系统,然而运行在一系列自治处理单元(PE也叫节点)上的系统,每个处理单元(结点)有各自的物理内存空间并且并且通过高速链路或者标准商品化网络连接。结点间通过紧密的合作实现对同一任务的协同计算。系统必须支持任意数量的进程和结点的动态扩展。 建立一个集群系统的主要目的在于:
对于用户来说,怎样看待计算机系统和计算资源是因人而异的。特别是在群集应用环境中,不同的用户需求对资源的要求和侧重点也有所不同。 这里有一个故事,发生在一个被频繁访问的小门户站点。网站刚开始运行了一段时间后,情况良好,但是不久后管理员发现用户抱怨响应速度很低。于是,他升级了服务器的CPU和磁盘系统,又加了512M的内存。心想,这会总不会有人再说什么了吧。可是,过了没多久,(当然,我们的这位站点很幸运的又吸引了大量的用户,现在用户数量变成了原来的5倍),情况更糟糕了,在高峰期间有的访问甚至被站点拒绝。这是怎么回事呢?再升级吧,可硬件的升级似乎走到了尽头,我们的管理员再次陷入困境。 这里,不幸的管理员遇到了系统瓶颈问题。通过查看日志,我们发现服务器CPU的负荷基本保持在10%左右(占用率),但是却有很多请求等待处理。是CPU不够快吗,显然不是;是磁盘太慢吗,已经用了最快的RAID阵列,平均寻道时间到达5ms,不能再快了;内存不够大吗,主板所能支持的只有4G,已经到了上限。所有的一切已经是极限,再升级下去只好更换到大型机了(那又会是一个无休止的投入)。站点每天仍要接受上百万次甚至上千万次的页面访问,怎么样才能既控制服务器硬件成本又能大幅度提高性能呢? 固然,添加高速磁盘阵列可以减少寻道时间,提高响应的速度,或者,使用Cache技术能够加快页面访问效率。但是,一味地依靠扩展单一系统的硬件终究会有上限,磁盘、内存、网络代宽的发展速度远远低于CPU的摩尔定律速度,造成彼此性能的互相牵制。而且,在单机系统种,越到高端的硬件,成本与性能比越是成指数下降(见下图)。解决这样的问题,就有必要从体系结构入手,而不是简单的升级机器。 单机系统性能/价格曲线 在上面的故事里。对于用户而言(指的是系统管理员和网站用户),服务器是提供web服务的资源,是若干计算、存储、数据的资源集合(查找数据、提供空间)。用户关心的是你的站点的响应速度而非你用了多快的CPU多大的内存。因此,我们从用户的角度出发,不难发现,如何看待你的计算资源,是紧紧和使用者的需求联系在一起的。那么,解决问题的关键就不是一些简单的数字层面上的思考了。沿着用户的需求--提高站点的响应速度,更确切的说缩短web站点响应每个HTTP请求的时间�D�D是管理员首要解决的问题。 我们并不否认升级硬件的作用,但是我们知道,这样的情况下,仅仅依赖硬件的局部更换是不经济的做法。CPU由500MHz变成1GHz,web的性能不会就提升两倍,甚至毫不夸张的说,这种升级只能提高web性能10%左右。喔,太令人沮丧了~~。 那我们能不能反过来想呢,既然量变没有实质作用,那干脆就来个大改革。彻底改变服务器的体系结构。当然,要把花费的钞票控制在BOSS可以承受的范围内,钱是用来花的不是用来烧的。方案可能有:
故事讲完,不知各位看官有何感想。其实集群技术并不是实验室的阳春白雪,也不是老教授闭门造车的产物。集群技术"和我们的国计民生,老百姓的生活有密切的关系" ;)。我们看到,适当的应用集群技术,不但具有明显的经济效益(很多用户就是冲着省钱而来),而且在性能、可用性、稳定性等诸多方面,具有很强的可扩展性。是计算体系近年来发展的主要方向。 研究集群技术,需要从多个方面着手,多角度的考虑集群系统。如果从上述的资源的角度考虑集群,就要注意用户是需要什么样的计算资源,是计算能力呢还是响应速度,或者是可用性;如果从硬件构架看,就有工作站集群(COW)、大规模并行处理机(MPP)、对称多处理机(SMP)、分布式异构计算集群(典型是GRID);如果从应用领域看,既有侧重于科学和工程计算的并行计算集群,也有侧重于作业负载的负载平衡集群,或者是广泛应用于严格商用环境的高可用容错集群;还有考虑集群的时候重点研究的几个方面:可用性、单一系统映像(SSI)、作业管理、调度、通信等等。可以说,孤立的从某一个角度或者某一个方面看集群,是无法真正了解集群的原理,准确的评估集群的各方面能力、性能,更别说为应用需求选择合适的集群环境了。了解集群,就得先从体系结构的设计和可扩展性开始。
|
发表评论
-
集群的可扩展性及其分布式体系结构(2)
2007-09-21 16:13 1573... -
集群的可扩展性及其分布式体系结构(2)-上
2007-09-21 16:11 1175... -
网格计算 —— 下一代分布式计算
2007-09-21 16:01 1428... -
负载均衡
2007-09-21 15:09 1100实 ... -
转 Java语言的特点
2007-09-12 11:51 1737... -
转载 谈谈Unicode编码
2007-09-12 11:49 895这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地 ... -
转载 字符串编码(charset, encoding/decoding)问题原理
2007-09-12 11:47 1058转载:http://www.iteye.com/article ... -
转载 Java 理论与实践: 正确使用 Volatile 变量
2007-09-12 11:42 607原文:http://www.ibm.com/developer ...
相关推荐
这个资料非常有价值。linux集群资料市面上很少,有价值的也很少。这个也是网上找来的。版权归原作者。大家共享学习。感谢作者。
本文内容包括:可扩展的并行计算体系结构可扩展与单一系统映象集群的重要指标结束语参考资料这篇文章是《集群的可扩展性及其分布式体系结构》第二篇的下半部分,将继续介绍常见的几类并行计算体系结构、可扩展与单一...
作者将侧重就集群的可扩展性及体系结构分析、原理论、集群的考量、具体的分析案例(LVS、beowulf、MOSIX)、集群高可用技术、分布式文件系统等等各个方面为您更加深入的介绍集群系统。本文是第一篇。主要阐述集群...
针对当前网络地理信息系统(WebGIS)中存在的效率问题和服务器端压力过大的问题,...结果表明,相比于当前其他模式的WebGIS,基于FastCGI多进程、分布式集群构建的WebGIS具有效率更高、可扩展性更强、稳定性更好的特点。
通过集群可以实现可扩展性(服务更多客户,提高吞吐量),负载均衡(平衡负载资源,使资源得以有效利用),高可用性(提供故障恢复和补偿机制,在关键性业务中提供容错功能)。WAS ND提供水平集群和垂直集群两种形式...
在大型网站架构的演变过程中,集中式的架构设计出于对系统的可扩展性、可维护性以及成本等多方面因素的考虑,逐渐被放弃,转而采用分布式的架构设计。分布式架构的核心思想是采用大量廉价的PC Server,构建一个低...
图:集群的体系结构 为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,集群采用三层结构,其体系结构如图所示,三层主要组成部分为: 负载调度器( ),它是整个集群对外面的前端机,...
体系结构数据模型空间,文档,向量,标量组件M概述Vearch是一个可扩展的分布式系统,用于深度学习向量的高效相似性搜索。 体系结构数据模型空间,文档,向量,标量组件主服务器,路由器和PartitionServer主服务器...
AutoDist提供了一个用户友好的界面,以可扩展性和最少的代码更改在许多GPU上分布各种深度学习模型的培训。 介绍 与专用的分布式ML系统不同,AutoDist的创建是为了以优异的全面性能加快各种DL模型的速度。 AutoDist...
{json:scada} 以MongoDB数据库服务器为中心的便携式可扩展SCADA / IoT平台。使命宣言通过利用主流开源IT工具提供易于使用,功能齐全,可扩展的便携式SCADA / IoT... 模块化分布式体系结构。 轻量级冗余数据采集节点
[Voltdb]内存中的数据存储体系结构具有分布式的概念 VoltDB 3.0数据库是在Ingres和PostgreSQL项目的创始人之一Mike Stonebraker的领导下开发的。 VoltDB具有水平可伸缩性,并且专注于实时事务处理(OLTP)。 在一个...
1、通过对 Linux 操作系统体系结构、 服务管理、包管理、NTP 协议时间 服务器、关系型数据库理论和 MySQL 数据库等相关知识的学习, 掌握⼤部分安装部署 Hadoop 集群操作系统层⾯的技能,为后续搭建 Hdoop 集群、对...
此外,BLBC适用于在经常用于处理大型数据集的现代并行和分布式计算体系结构上的实现。我们通过实证研究BLBC的性能特征,并通过对模拟数据和真实数据的实验与现有方法的性能进行比较。 结果表明,BLBC在保持良好统计...
使用,通过管理并与内嵌CI / CD +安全和管理功能超层,您将学习如何使用最新的技术,在智能和分布式架构上运行可扩展性,弹性和安全应用。 您还将发现一个对于使用微服务体系结构创建简单和可扩展的API很有用。 ...
通过群集和网络设备控制分片的可扩展性。 性能对于第一个发行版来说是好的,并且具有将继续支持改进的体系结构。 全局网络视图,网络图和应用程序意图的北向抽象。 向南可插拔,以支持OpenFlow和新协议或旧协议...
可伸缩性: 可伸缩性: ⼜称可扩展性,是指通过扩展系统规模来提⾼性能并处理更⼤数量的⽤户和通过扩展系统规模提⾼系统的容错能⼒等 横⾏扩展: 横⾏扩展: 向逻辑单元之外的扩展,增加更多逻辑单元的资源,并使...
通过群集和网络设备控制分片的可扩展性。 性能对于第一个发行版来说是好的,并且具有将继续支持改进的体系结构。 全局网络视图,网络图和应用程序意图的北向抽象。 可插拔的南行,用于支持OpenFlow,P4Runtime...
可扩展性 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. 中等规模数据库解决方案(某...