GRID新手入门
原文来自IBM developerWorks (http://www.ibm.com/developerworks/cn/grid/newto/)
网格计算入门
许多对网格计算感兴趣的读者都会问一些非常基本的问题:
* 从哪里开始?
* 如何使用这些资料?
* 如何把这些资料串到一起?
* 我该如何适应网格计算?
* 是否已经有网格项目可以参与?
这正是这样一份指南,指导您学习网格技术提供的令人激动的优点。本文在适当的上下文环境中介绍了网格计算的基本概念,并把相关的 developerWorks 文章、教程、技巧、IBM 学习服务教育、研讨会和 IBM 产品串联到一起,供日后深入研究。本文以一种直观的框架介绍网格计算,尝试整合多方资料,同时突出重点。
如果您感觉这些还不够,那就对了。因为网格领域正在迅速发展。网格计算拥有扎实的学术研究基础,并被稳健地运用到商业应用中。标准、框架、实现和应用程序的改变日新月异。当前的网格计算也许会让您想起从前的 Web,或者 XML 和 Web 服务的出现,它们一开始发展也都非常缓慢。但是与这些技术领域一样,一旦稳定的标准和工具的产生,并且相互融合,那么我们可以预测网格计算领域就会快速成长。因此,我们撰写了这份指南,让开发人员可以有一个基础来了解网格技术了。
什么是网格计算?
由于网格计算是一种新兴的技术,对于不同的人来说可能会有不同的定义,但是网格计算有一个非常简单却又广泛适用的定义:
有了网格计算技术,您可以将服务器、存储系统和网络联合在一起,组成一个大的系统,从而为用户提供功能强大的多系统资源来处理特定的任务。对于最终用户或应用程序来说,数据文件、应用程序和系统看起来就像是一个巨大的虚拟计算系统。
网格计算是分布式网络发展的下一代产物。就像是 Internet 让用户可以分享思想和文件并以此来滋生项目一样,网格计算让我们可以分享分散的计算系统资源,这样人们就可以真正地开展这些项目的工作。网格计算利用了计算机(及其用户)的能力来进一步的通信:有了网格计算之后,您就可以走出门去使用其他人的计算和存储资源,而不仅仅限定在您自己所拥有的范围之内。
有了网格计算之后,组织就可以将自己分布的、难以管理的系统转换到一个大型的虚拟计算机上,这样就可以让那些由于工作量太大而在一台计算机上很难处理的问题和流程可以得到有效的处理。要解决的问题包括数据处理、网络带宽以及数据存储的问题。链接到网格中的系统可能在同一间房子里面,也可能分布于世界上的各个角落。它们可能运行在不同的操作系统和硬件平台。甚至它们归属于不同的组织。不管网格资源的深度如何,所有的网格用户所体验到的都是一个巨大的虚拟计算机处理资源。
网格的主要目的是对资源进行虚拟化来解决问题。网格计算用来访问的资源主要包括(但不局限于)以下内容:
* 计算/处理能力。
* 数据存储/网络文件系统。
* 通信和带宽。
* 应用程序软件。
由于真正构建网格的概念也还比较新,因此另外一种好的描述网格的方法就是解释清楚网格不是什么。以下都不是网格:
* 集群
* 网络附加存储设备
* 科学设施
* 网络
这些都可能是网格中的重要组件,但是它们本身却并不构成网格。能够把几百万台计算机紧密联结在一起——集群、工作站、台式PC、超级计算机——提供数据存储、工具、可视化设备,一直是网格计算技术所力争实现的梦想。而一旦能成为现实,网格计算将能给科学以及工业界带来革命性的改变。
那么,需要采取些什么措施才能将网格计算的概念所展示的远景变成现实呢?这需要制定一些标准和无缝的、开放的通用协议和接口,所有这些东西现在都在定义之中,这些与允许从 Web 访问信息的技术非常相似。
更多信息:
- “Grid Computing: Past, Present, and Future(PDF)”讨论了网格计算的历史,并定义出 IBM 在网格计算的远景和解决方案。
- “网格观点:网格计算 —— 下一代分布式计算”详细介绍了网格是如何构成的,并与其他分布式系统进行了比较。
- “比较传统网格与高性能计算”描述了网格计算和并行计算之间异同。
- IBM 红皮书“Fundamentals of Grid Computing” 虽然是在几年之前发表的,但是这本红皮书收集的有关网格计算及其概念和体系结构的内容现在仍然非常有用。
- IBM 网格计算站点,这里有丰富的白皮书、分析报告和成功案例。此处解释了网格是什么,为什么说网格非常有用,以及 IBM 如何帮助您利用网格技术。
- IBM 红皮书“Introduction to Grid Computing” 介绍了网格计算的概览,包括概念、标准,以及网格计算能提供价值的方面。
- Ian Foster、Carl Kesselman 和 Steven Tuecke 撰写的准白皮书 “Anatomy of the Grid(PDF)” 对网格计算的领域进行了定义,并重点介绍了网格的体系结构。
- Ian Foster、Carl Kesselman、Jeffrey Nick 和 Steven Tuecke 撰写的“Physiology of the Grid(PDF)”介绍了如何在 Web 服务环境中利用网格计算。
- “网格观点:虚拟化是 SOA 环境的基础”能帮助您在网格计算、SOA、基础架构,以及虚拟化等概念中找出它们之间的不同和优异之处。
GridCafe 上面有很多为网格技术新手准备的,有关网格计算的介绍性读物。
为什么网格计算非常重要?
网格计算将会把许多计算机联合到一起工作。几乎所有机构都存在大量的闲置计算资源,广泛分布在各个地方。UNIX® 服务器只有少于10% 的时间在真正“执行”任务,几乎所有的 PC 每天有 95% 的时间什么都不做。请想象一下,如果一家航空公司 90% 的飞机在地面上,一家汽车制造商 40% 的组装车间被闲置,或者一家连锁旅店 95% 的房间是空置的,那该是多么糟糕的情况。
计算环境的虚拟化(或称为网格计算)是 IBM 随需应变策略中的一个关键组件。虚拟化让组织可以:
* 使用空闲的计算机资源来加速业务处理过程。
* 加速应用程序的执行,这样就可以缩短处理时间,从而可以快速对市场做出响应。
* 开发更新的、生产效率更高的应用程序。
* 降低开发新应用程序的成本。
* 提高协作能力和生产能力。
* 最大化用户可以使用的资源。
* 提高 IT 环境的弹性和利用率。
系统管理员和开发人员可以从网格计算中获益,这是因为网格让他们可以:
* 优化基础设施来平衡任务负载,并为高需求的应用程序提供额外的处理能力。
* 提高对数据的访问,支持不同学科、组织和业务之间的协作。
* 提供弹性更好的基础架构。
业务也可以从网格计算中获益,这是因为可以:
* 提高生产效率,这是通过为用户提供需要的资源而实现的。
* 更有效地使用现有的资源。
* 快速响应业务和市场需求的变化。
* 可以在不同实体之间进行协作。
* 创建一些可以共享资源和数据的虚拟组织。
网格计算所解决的一个最重要的业务问题是提高了对现有资源的利用率。公司对计算能力进行了非常大的投资,但是大部分站点在 90% 的时间里面都是空闲的。网格计算可以帮助这些业务连接到那些没有充分使用的机器上,利用它们的计算能力,将其作为一个大型计算机进行管理。
更多信息:
- 这里有许多关于真实的组织部署网格的 案例研究和成功故事。
我可以使用网格计算做些什么?
和 Internet 一样,网格计算也起源于研究和学术领域。现在,商业企业也开始使用网格了。网格计算带来了新型的财务和商业模型,以下是一些例子:
* 在财经服务领域,网格计算被用于加速交易处理、处理海量数据,并为只能容忍极短停机时间的关键业务(mission-critical)工作平台提供更稳定的 IT 环境。
* 政府机关使用网格来集中、保护和集成大量数据存储。许多市政和军事机构都特别要求跨代理机构协作、数据集成和安全,以及跨数千个数据存储库快速获取信息。
* 涉足生命科学(比如基因组研究和药物开发)的公司使用并行和网格计算对大量数据执行处理、净化、交叉制表和比较操作。更快的处理速度意味着更快地占领市场。在这些行业,任何微小的优势都可能成为决定因素。
这些面向网格的业务模型不仅仅是 可以 实现,而且有些已经实现了(在您阅读下面这些例子时会看到)。
更多信息:
- 请参阅“为网格构建业务案例”。
- 了解如何在各种领域中使用网格,并检验这些网格计算商业案例:网格计算解决方案。
- 了解为什么网格对您的业务有益:网格的益处。
- 请参阅 IBM 红皮书 Grid Computing in Research and Education。
- 请参阅“虚拟化概述:模式的观点”。
- 网格计算是 随需应变业务 的一部分。
- 通过为您的组织定制一个 IBM Grid Innovation Workshop 获得动手实践经验。
- 请参阅真实的组织部署网格的 案例研究和成功故事。
- 通过参与 developerWorks 技术活动和Webcast 同最新网格技术保持同步。
网格计算有哪些主要组件?
网格计算有 6个主要组件:
* 安全性
* 用户接口
* 任务负载管理
* 调度
* 数据管理
* 资源管理
现在让我们详细介绍一下各个组件。
网格中的计算机都连接到了网络上,并且都正在运行应用程序。它们可能正在处理敏感的或非常有价值的数据,因此网格的安全性组件是非常值得关注的一个问题。这个组件包括诸如加密、认证和授权之类的元素。
访问网格中的信息也非常重要,用户接口组件为用户处理这种任务。这通常有两种方法:
* 由用户正在运行的应用程序提供接口
* 由网格管理员提供的接口,可能是 Web 门户,在一个单一的虚拟空间中为应用程序和网格中的可用资源提供访问权限
门户风格的接口也非常重要,因为这可以帮助用户了解如何对网格进行查询。
用户想要在网格上运行的应用程序必须了解有哪些资源可用。这就是任务负载管理服务的用武之地了。应用程序可以与任务负载管理器进行通信,从而了解可用的服务以及这些服务的状态。
调度器需要用来定位在哪个计算机上运行应用程序,并分配所需要的作业。这可以非常简单,只是利用下一个可用资源;但是通常都会涉及作业队列的优先级排序、管理负载、在需要保留资源时寻找其他资源并对整个过程进行监视。
如果应用程序正在某个系统上运行,而这个系统却没有应用程序所需要的数据,那么就需要采用一种安全可靠的数据管理机制将数据通过各台计算机移动到正确的位置,这可能需要采用各种协议。
要处理这种关键的任务,例如使用特定的资源来启动作业、监视这些作业的状态并返回结果,就需要一种资源管理机制。
重要的一点是,记住网格计算并不是在一个真空环境中进行操作的:它可能要利用目前的各种协议和计算机技术。记住这一点之后,为了充分理解网格计算的功能,您可能还需要学习下面这些技术和标准。
更多信息:
- “网格计算:关键组件是什么?”是一篇很老却非常不错的文章——读者喜欢此文中对网格计算概念和所涉及组件的介绍。
- 了解目前安全性的进展如何: “ 网格进展:安全报告” 和 “ 网格进展:安全性——观察一些技巧和项目”。并通过“构建统一网格系列”学习如何对生产状态的网格应用安全原则。
- 请阅读 The information grid: Article summary。
- 在 “网格观察:在网格基础设施中有效地采用自动化”中,可以学习如何动态分配资源及其原因。
- 在 developerWorks 上学习面向服务的体系结构(Service-Oriented Architectures,SOA)的基础知识:SOA and Web services 新手入门。
有关这些技术和规范的简介:
网格计算有哪些相关标准?
要更好地理解网格计算所涉及的标准,您还需要理解网格架构是如何定义的。这样就可以了解一点儿有关 OGSA 对架构定义的知识,这是由 Global Grid Forum(GGF)成员之一开发的。
架构 —— OGSA 定义了什么是网格服务,并定义了网格环境提供的整体结构和服务。网格服务是建立在 Web 服务的标准之上,OGSA 将网格服务定义为一个符合特定规范的 Web 服务。例如,网格服务的定义采用了带有少许扩展的标准 WSDL(Web Services Definition Language,Web 服务定义语言)。
这一点为什么十分重要?因为这样的话,我们就可以使用现有的标准(比如 SOAP、XML 和 WS-Security)来访问各种网格服务。有了这个基础,我们就可以无缝地添加并集成其他服务了(例如生命周期的管理)。当新的网格服务可用时,我们可以通过标准的方式查找、识别和利用它们。
除此之外,OGSA 将会为采用不同底层工具构建的网格服务提供彼此之间的互操作性。
规范 —— 网格规范正在逐渐出现。GGF 上有很多工作组正忙于在各个领域定义一系列网格标准,这些领域包括:
* 应用程序和程序设计模型
* 架构
* 数据管理
* 安全性
* 性能
* 调度和资源管理
开放网格服务基础设施(Open Grid Services Infrastructure,OGSI) 是 OGSA 用于描述概念的正式规范,不过正在被 Web 服务资源框架(Web Services Resource Framework,WSRF)所取代。WSRF 的目标是能够以一种更能接近通用的 Web 服务的方式来提供网格架构,这些规范可以让在 OGSA 中定义的服务完全基于标准的 Web 服务。
(注:OGSI在GT3.2中被广泛使用,WSRF则被GT4采用)
您应该对这些正在不断发展的网格标准了解多少呢?这要看情况决定。IBM 和其他一些业界的领先者与研究人员和来自很多网格软件供应商的代表们一起积极地参与到网格标准的制定工作中来。您是一个社团的软件开发人员么?如果是,那么您就可能会使用基于这些新标准的网格工具和产品。此时您就可能希望了解一下这些标准,并了解这些工作的进展情况。
更多信息:
- 请访问 有关网格的标准。
- 利用这些 developerWorks 教程学习有关 WSRF 的知识(2005 年 3 月)。
- developerWorks 中国SOA 和 Web 服务专区 提供了丰富的文章、教程、新闻和培训资料,可以帮助开发人员快速了解 SOA 和 Web 服务技术。
- 阅读有关 “Web 服务资源框架(Web Services Resource Framework)” 的内容。
- “The Physiology of the Grid”(PDF)介绍了如何利用网格机制实现一个 SOA,并解释了如何在一个 Web 服务框架中集成网格功能,还阐述了如何在商业计算中利用这种架构作为分布式系统集成的基础,这可以在组织内部,也可以是跨组织的。
我可以马上构建网格吗?
当然。您可以使用开放源代码工具或者供应商提供的专利工具和产品马上开始构建网格。随着时间推移,网格标准将会稳定下来,那时供应商将会提供符合新标准的工具,使您可以更加方便地把各个组件结合到一起。
对于构建网格来说,哪些技术是基础的呢?服务在网格计算中是至关重要的。这些服务包括:
* 数据查询
* 数据管理
* 处理器请求
* 任务负载的平衡
* 作业调度
* 带宽分配
在网格服务中可以调用这些服务。有些计算机会运行网格服务,另外一些计算机则会运行应用程序,它们作为客户机与网格服务进行联系。网格服务实际上就是具有其他功能的 Web 服务。
Web 服务 —— 一组可以通过网络进行调用的应用程序,让应用程序可以相互进行通信,而不管采用哪种平台或哪种编程语言。
要构建网格,您需要一些工具。网格工具可以分为以下几类:
* 基础设施 基础设施包括文件系统、调度程序和资源管理器、消息传送系统、安全应用程序、证书颁发机构,以及像 GridFTP 这样的文件传输机制。
* 网格上的系统必须能够发现可用的服务。简言之,网格系统必须能够定义(和监视)网格的拓扑,这样才能达到共享和协作的目的。许多网格目录服务实现建立在以往成功的模型之上,比如 LDAP、DNS、网络管理协议和索引服务。
* 网格的主要优势之一在于效率最大化,这可以通过 调度程序和负载均衡器 来 实现。调度程序确保任务按照一定的顺序(例如,优先级、最后期限、紧急程度)来完成,负载均衡器在整个系统内分配任务和数据管理,减少瓶颈产生的机会。
* 开发人员工具 针对网格开发人员的工具定位各有不同(文件传输、通信、环境控制),其范围覆盖了从各种工具程序到所有 API。
* 网格环境的 安全性 是指验证和授权 —— 换句话说,也就是控制谁/什么可以访问网格的资源 —— 但不局限于此。例如,消息完整性和消息保密性在财务和医疗领域中是十分重要的。
现在要构建一个网格,从下载 Globus Toolkit 开始是一个不错的选择。该工具由 Globus Project 开发,这是一个致力于把网格概念应用于科学和工程计算的研究和开发项目。这个工具由一组支持网格和网格应用程序的服务和软件库组成。
Commodity Grid Kits(CoG)提供了通过特定的框架来访问网格服务的能力,包括 Java™、 Python 和 Perl。
更多信息:
- 请参阅两部优秀的 IBM 红皮书: On Demand Operating Environment: Creating Business Flexibility 和 On Demand Operating Environment: Managing the Infrastructure (Virtualization Engine Update)
- 在文章“网格观察: 在网格基础设施中有效地采用自动化”中,您可以学习如何动态分配资源及其原因。
- 文章“协调网格工作负载 —— 既非盛宴,也无饥荒”(2004 年 9 月)使用一个样例基础设施介绍了如何管理网格环境内外的资源。
- 请阅读当您拥有“地理上分布的网格”时所应考虑的问题(2004 年 9 月)。
- 体验 “Analytics Acceleration Grid”系列文章中的案例(2004 年 9 月)。
- 阅读“网格观点: Ian Foster 评价 Globus Toolkit 4.0 的意义”中有关 Globus Toolkit 最新发行版本的介绍。
- 了解有关 Grid Security Infrastructure(GSI)和 Globus Toolkit 4(GT4)中安全组件的介绍:“GT4 安全性简介”。
- 学习如何“注册 Globus Toolkit 4 网格服务”。
- 学习在使用各种 Globus Toolkit 版本时如何“使用 OGCE 向网格资源提交作业”。
- 了解 GlobusWORLD 会议中“从 GlobusWORLD 了解网格发展”的内容。
- 在 Globus 中利用 Java、 Python 和 Perl CoG 包,这可以让您通过这三种技术来访问网格服务。
- 了解与网格服务有关的 下载和产品。
- 请参看 alphaWorks 上可以使用的网格技术,包括 IBM Emerging Technologies Toolkit。
怎样才能在我的应用程序中启用网格?
这需要一定的规划。
首先需要考虑网格的基本结构和它所提供的服务。您必须知道如何把基础设施的各个部分组合到一起,其中包括安全性、资源管理、信息服务和数据管理,这些将会影响应用程序的架构、设计和部署。
更多信息:
- 系列文章“Six strategies for grid application enablement”(2004 年 4 月)介绍了不同级别的网格中都可以采用的一个优秀模型。
- “Enable existing applications for grid”(2004 年 6 月)讨论了如何按照一种模式来为平台特定的分布式应用程序和启用 Web 的应用程序实现前 3 种策略。
- “Design an application for grid”(2003 年 9 月)教您如何在现有应用程序中启用网格,或者从头开始构建网格。
- “How grid infrastructure affects application design”(2003 年 7 月)是有关在为网格调整应用程序时对网格结构和应用程序类型进行考虑的基本读物。
- IBM Redbook“Grid Services Programming and Application Enablement”介绍了开发网格服务应用程序所要采取的步骤。
- 请参阅所有有关网格和随需应变计算的 IBM Redbooks。
- IBM Redbook“Enabling Applications for Grid Computing with Globus”着重介绍了对应用程序启用网格的问题和考虑,其中包含了很多 C/C++ 和 Java 程序的例子。
- 参阅 IBM Global Services 所提供的 课程。
- 在教程“使用 Perl 构建网格”和“ 使用 Python 构建网格应用程序 ”中学习一些基本的知识和经验。
- 系列文章“Business service grid”介绍了如何使用 IBM alphaWorks 上提供的 Service Domain 技术 来构建网格解决方案。
- 这些 网格应用程序教程 可以提供启用和构建网格应用程序的第一手经验。
- 从我们的 技术库 中寻找一些实践经验。