IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Grid computing | WebSphere  >

网格观点: WebSphere Extended Deployment 概述

将 WebSphere XD 视为一种 SOA 的集成网格平台和基础设施虚拟化环境

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 中级

Matt Haynos (mph@us.ibm.com), 产品经理, WebSphere Extended Deployment, IBM

2007 年 3 月 16 日

构成网格计算的技术有很多。各个组织一般都要非常努力才能成功集成和部署这些技术。不过,IBM® WebSphere® Extended Deployment 是一种很好的集成网格平台,可以用于虚拟化和管理 Java™ 2 Platform Enterprise Edition 1.4 (J2EE)和 Java 应用服务器。这个平台包含了各种应用程序和信息虚拟化能力及丰富的管理功能。本文简要介绍了 WebSphere Extended Deployment 以及如何用它来帮助您的组织实现一个目标驱动的动态网格基础设施,该基础设施在虚拟化基础上构建并非常适合于 SOA 环境。

简介

这个 “网格观点” 所涵盖的主题范围很广。其中大部分文章实际上都是概念性的,探索了网格计算领域中一些非常重要的趋势和方向。关键的技术及相关产品会随带介绍,不过这次我想对这个过程进行一点改变,重点介绍一个特殊产品:WebSphere Extended Deployment(XD)。

WebSphere XD 是一个集成网格平台或解决方案的很好例子。在 “整体大于局部之和” 这篇文章中,我曾对各种功能领域的分类进行了归纳,它们合在一起构成了网格计算。这些功能领域可以整体划分为两组:任务负载虚拟化和信息虚拟化。很多供应商和产品大都专注于某些特定领域,但是很少会提供端到端的解决方案。WebSphere XD 却不仅仅是一个端到端的解决方案。

诸如 WebSphere XD 之类的集成网格产品具有明显的优点:各种网格功能都已预先集成。管理员并不需要逐步地测试和部署新功能,比如先调度、再供应和任务负载管理。由此而来的就暗示着这样一种信任:您的产品或供应商将提供业界最佳的功能及可访问的服务接口(只要可能,这些接口就是基于标准的)以便可以更容易地进行预集成功能与环境的扩展或集成。

WebSphere XD 是一个用来提供 J2EE 应用程序虚拟化的平台。它并不是像 WebSphere Application Server 或 Apache Tomcat 一样的应用服务器。相反,它在这些应用服务器之上运行,用来将应用服务器聚合成一个网格或虚拟化环境。另外,WebSphere XD 还在很大程度上对应用服务器所提供的服务质量进行了扩充。例如,它支持同一个应用程序多个版本的部署和激活/禁用,这个功能非常不错。

至于任务负载虚拟化,WebSphere XD 也为之提供了丰富的功能,稍后我就会对此进行讨论。此处值得一提的是现有的联机事务处理 (OLTP)应用程序不需要进行任何代码修改就可以获得与网格和基础设施虚拟化有关的所有优点。这是一个巨大的益处。

此外,WebSphere XD 继续侧重于对除 OLTP 之外的新类型应用程序提供支持。在 V6.0 版本中,其他类型的应用程序,例如事务批处理和计算密集型应用程序,也都可以得到支持。这一点尤其重要,因为这让组织能够将这些新出现的应用程序类型部署到现有的 WebSphere 应用程序基础设施上,从而提高对基础设施的利用和优化。我们将这种能力称为业务网格

WebSphere XD 还包括了一些关键的信息虚拟化技术,例如 ObjectGrid 和 WebSphere Partitioning Facility。我们稍后将详细讨论这些技术,现在要考虑的是 WebSphere XD 中的数据驱动编程和事件驱动编程的第一级表示。这不但可以让新应用程序的开发围绕数据流和相关事件进行,而且还可以支持高级数据表示与业务逻辑及任务负载虚拟化能力的融合(请参看 参考资料)。通常,数据和计算是网格空间中孑然不同的领域,但您无法或也不应该将它们完全割裂开来。

在深入理解支持任务负载和信息虚拟化的基础技术之前,让我们先来更多了解一下 WebSphere XD 以及它与 IT 业界内两个重要主题 —— 虚拟化和面向服务架构(SOA)—— 间的关系。





回页首


WebSphere XD 和虚拟化

V5.1 版本的 WebSphere XD 通过将底层基础设施与之上运行的应用程序分割开来引入了对 WebSphere Application Server 平台进行虚拟化的概念。这种隔离让应用程序可以在一组资源上进行安置和管理。这是前面强调的应用程序或任务负载虚拟化的本质,不过之所以再次进行强调,是因为 WebSphere XD 中的很多复杂功能都可以通过这种隔离而启用,例如动态集群。

另外,由于在单个或一组计算机与应用程序之间不再存在紧密绑定或一对一的关系,因此 WebSphere XD 可以根据业务规则智能地管理或迁移任务负载。高优先级的应用程序可以分配到大部分资源;低优先级的应用程序只能暂时等待,稍后再运行或者只能到性能较差的资源上运行。任务负载的优先权、智能资源分配以及服务级别目标是 WebSphere XD 的重要部分,它们对于应用程序用户来说是无缝的,不过需要一些内嵌或预集成的复杂作业调度和任务负载管理功能。

这种虚拟化概念还可以应用于大量平台,包括诸如大型机之类的大型机器、对称多处理器系统以及资源池中的分布式资源。这通常就称为一个网格。这些资源通常是同构的(刀片服务器或集群),但是也可以是(通常都是)异构的。

尽管对于异构资源的支持似乎并不是什么重点,但是随着虚拟化基础设施的持续发展,将网格中的各种资源或资源池包括进来及让基础设施管理软件无缝地使用和管理资源的能力就为组织提供了固有的基础设施灵活性和更多选择。使用 WebSphere XD,就可以管理基础设施资源使其无论从应用程序开发人员的角度还是从系统管理员的角度看都是一个一致的实体。基于这种虚拟化,组织还可以利用 WebSphere XD 平台中集成的各种管理能力来提高基础设施的价值。





回页首


WebSphere XD 和 SOA

SOA 是一种让您可以为 IT 资源、应用程序和业务处理流程来构建、部署和集成服务的风格或框架。它可以促进集成,提供应用程序的模块化,并允许将业务处理看作是一组调整过的复合业务服务。这为组织提供了快速构建新应用程序及以一种更为无缝的方式在企业及其合伙人、供应者和顾客之间集成应用程序和业务处理的能力。

尽管 SOA 在业界的发展背后的动力很大,但是随着组织中 SOA 环境复杂性的增加,它需要底层基础设施具有相应的灵活性。除非您具有一个基础设施能够支持 SOA 的动态特性以及无所不在的灵活性,否则就很难充分实现 SOA 的优点。虚拟化和网格环境就恰好提供了这个基础。WebSphere XD 的构建完全是为了能够从 SOA 出发实现业务和基础设施价值。我们在 “SOA 环境中的服务虚拟化” 一节中将从技术的角度来讨论这个问题。





回页首


WebSphere XD 中的任务负载虚拟化

正如我们在之前的文章中介绍过的一样,任务负载虚拟化表现为 3 个主要组件的交互能力:调度、任务负载管理和供应。这些组件以一种极为协调的方式一起工作,根据服务级别或业务策略来执行某个任务。 WebSphere XD 可以实现这 3 个组件的功能,不过可能不是以用户所习惯的方式进行的。调度就是一个很好的例子。

很多人都会将调度与批处理调度联系在一起,后者执行任务的请求是使用一个任务及其依赖关系来描述的,通常还包括作业中各个步骤的顺序,因此也称为工作流。所有这些信息通常都会使用诸如作业控制语言(JCL)或 Java for Simple DirectMedia Layer(JSDL)之类的语言进行描述。

尽管 WebSphere XD 的确包含了一个作业调度器来协调批处理任务负载的执行,例如事务型批处理或计算密集型的任务,但是 WebSphere XD 所管理的主要任务负载是联机事务处理(OLTP)。OLTP 请求都是动态的,它们并不是预先描述好的。因此,在考虑调度问题时,我们需要记住调度的最终职责是要将作业请求(例如,告诉我我的某个银行帐号的余额)放到某个资源上,然后开始执行。

从技术上来说,在最简单的形式中,调度最终就是关于应用程序的安置的问题。因此我们将着重介绍适用于 OLTP 任务负载的任务负载虚拟化的概念。WebSphere XD 中的批处理作业调度器与传统的批处理调度概念非常类似。


图 1. WebSphere XD 中的任务负载虚拟化
WebSphere XD 中的任务负载虚拟化

WebSphere XD 中有 3 个重要实体提供了任务负载虚拟化功能:On Demand Router(ODR)、Application Placement Controller (APC)和 Dynamic Cluster。

On Demand Router 包括很多技术,它们合在一起提供了复杂的任务负载管理功能。随着要处理的任务的到达,每个请求都会逐一进行检验,适当进行分类,并匹配合适的服务策略。任务按照重要性的高低顺序进行处理,而不是按照到达的先后顺序进行处理。

有一种重要的任务负载管理和控制技术称为流控制,它是由 Autonomic Flow Request Manager(AFRM)提供的。使用这种复杂的排队技术,发往应用服务器集群的任务比率可以进行控制,从而就可以改变集群中资源上处于活动状态的每种作业的数量。

我们乘坐飞机时可能都曾体验过流控制。当交通繁忙或由于天气的原因必须增加飞机之间的间隔时,空中交通控制部门就会有效地限制拥挤区域的飞机数量。这就是很多时候为什么我们会听到自己的飞机目前处于 “ground stop” 状态(这意味着飞机暂时不能起飞),或者我们乘坐的飞机会在一个并不是最终目的地的城市上空盘旋。

流控制是有效满足服务级别目标的一种非常重要的技术,它可以支持基础设施的扩展,并可以防止系统过载或单个应用程序霸占整个环境的情况。

On Demand Router 可以将流量分发到集群中的各个应用服务器上,方法是通过平衡对后端应用服务器上出现的错误情况的响应及响应的时间。这通常被称为具有动态权重的路由负载均衡

On Demand Router 处理的任务请求最终都是由 Application Placement Controller 来处理的。Application Placement Controller 与 Dynamic Cluster 一起对 On Demand Router 进行了有益的补充,提供了 WebSphere XD 中的任务负载管理和虚拟化功能。

Dynamic Cluster 是动态的,原因是其大小可以根据所要达到的服务策略和当前负载情况而自动实时地调整。为了能够及时控制在某个时刻系统有多少容量可供应用程序使用,WebSphere XD 会通过启动或停止应用服务器来增加或减少活动应用服务器的数量。这样就允许资源池具有很高的利用率,因为它由很多应用程序共享并可用来以一种可以随需要的变化而相应进行调整的方式来处理组合的流量。

最后,任务请求由 Application Placement Controller 安置进而执行。安置决策可以自动进行(on-demand mode),也可以推荐给管理员(supervisory mode)。WebSphere XD 还支持与 Tivoli® Provisioning Manager 的集成,这样新硬件就可以增加到资源池中了。





回页首


SOA 环境中的服务虚拟化

SOA 目前正在驱动将应用程序的功能逐渐分解为一些要素服务,然后再将它们组合成更高级的业务服务。在 “虚拟化是 SOA 环境的基础” 一文中我介绍了采用虚拟化所带来的令人瞩目的价值,以及诸如 WebSphere XD 之类的产品是如何提供 SOA 环境的,另外,还归纳了虚拟化和 SOA 是如何相互进行协作的。

现在,服务虚拟化服务网络 这两个术语已经开始用来描述针对 SOA 部署的特定的虚拟化应用程序。下面让我们来详细介绍一下服务虚拟化的技术特性。


图 2. 服务虚拟化的技术特性
服务虚拟化的技术特性

服务虚拟化的第一个特性是服务安置,即在运行时动态选择在哪里执行服务的能力。这一点非常重要,因为服务有时候启动了,有时候又停止了,它们存在的时间可能非常短暂。第二个特性与服务生命周期管理有关,这是根据需要动态启动或停止服务的能力。服务虚拟化的最后一个特性是服务的移动性,即服务在一组资源上的动态移动。

如果我们从 WebSphere XD 和任务负载虚拟化能力的角度来看待这些特性,就很容易看出为什么 WebSphere XD 对于 SOA 来说是如此强大的一个基础设施了。





回页首


WebSphere XD 中的信息虚拟化

WebSphere XD 包含了一些重要的功能来解决分布式网格中数据方面的挑战。这种网格通常称为数据网格,不过我并不认为必须要将网格划分为计算网格和数据网格。当然,有一些特殊原因会导致一些网格偏重于计算或数据,但是大部分应用程序和问题都有一些重大的数据和计算方面的挑战和要求。因此,对分布式网格中的计算和数据处理进行整体分析才是正确的方法,WebSphere XD 就是一个驱动计算和数据在应用程序间进行融合的平台。

WebSphere XD 包含了两个旨在减少大量应用程序之间的复杂数据挑战的组件。第一个组件是 WebSphere Partitioning Facility,它提供了一个可以支持非对称集群的分区模型。非对称集群可以根据定义好的应用程序分区来进行智能请求路由,这样可以极大改进缓存比率和事务性能。这对于特定类别的问题非常理想并可以为这些应用程序带来极大程度的性能改进。

第二个组件是 ObjectGrid。ObjectGrid 很有意义,这是因为它提供了一个灵活的分布式缓存框架,这个框架可以将数据在多个应用程序之间进行存储和共享。这不但可以提高事务的吞吐量,改进事务的性能,而且还可以促进创建各种以数据为中点的应用模式。有时这些模式通常是指分布式应用程序的状态管理。由于 ObjectGrid 是基于 Java 2 Standard Edition(J2SE)的,因此它在各种环境之间都可以使用,这样这种编程模型就是轻量级的了。

让我们先来看几种应用程序模式。在今后的文章中我们将对这些模式展开进行介绍,不过在本文中我们的重点是突出展示一些与 ObjectGrid 相关的初级的应用程序模式。这些模式有:

  • 简单数据/数据库 —— 应用程序可能会希望通过将 ObjectGrid 配置用作一个缓存来简单地访问它的数据结构以改进数据性能和吞吐量。这是一种很传统的数据缓存场景。ObjectGrid 通过提供事务语义来增强这种场景。
  • 客户机-服务器 —— Java 虚拟机可以有一个本地 ObjectGrid 放在远程 ObjectGrid 的前端,并对数据子集进行缓存。这允许客户机充分利用大型的远程缓存来获取后端处理或加速对缓存结果的访问。客户机可以使用远程 ObjectGrid 所提供的分布式锁定服务来协调对客户机之间的共享数据的访问。
  • 超大规模数据网格 —— ObjectGrid 客户机可以调用一些在 ObjectGrid 中所有机器上并行运行的代理。之后,客户机可以进一步并行对 ObjectGrid 中存储的数据进行聚集。

此外,ObjectGrid 的设计还十分有利于健壮性,原因是 ObjectGrid 允许通过使用复本对数据进行冗余存储。根据用户的喜好,ObjectGrid 会自动维护最少数量的复本来支持容错功能。另外,ObjectGrid 会在分区之间均衡数据以便可以提高数据访问的性能和很好地支持可伸缩性。这些服务质量让 ObjectGrid 应用程序可以可靠地部署到产品环境中。





回页首


关于管理的一句话

尽管我重点介绍的是 WebSphere XD 中任务负载和信息的虚拟化,以及它们的集成特性,但是如果不提一下 WebSphere XD 中管理特性的重要性,那我多少有点不负责任。

WebSphere XD 自动的智能行为带来了一组丰富的管理功能,它们可以对组织的现有管理工具进行扩充和补充。这一点非常重要,因为在分布式环境中,能够深入了解系统行为并支持适当操作是十分重要的。

因此 WebSphere XD 包含了一个健康管理框架以及一些复杂的操作管理功能,还有一些用来对资源和任务负载性能进行可视化的创新方法。





回页首


结束语

共享这篇文章......

digg 将本文提交到 Digg
del.icio.us 发布到 del.icio.us
Slashdot 提交到 Slashdot!

WebSphere Extended Deployment 是一个针对 J2EE 应用服务器而设计的集成网格平台。它以一种预先集成的可用方式提供了在 “网格观点” 系列文章中讨论的很多网格技术的能力。在为应用程序和信息进行虚拟化的基础之上,它提供了丰富的功能和良好的服务质量,例如操作的优化、对新型应用程序和模式的支持,以及嵌入式健康和操作管理。



参考资料

学习

讨论


关于作者

Matt Haynos

Matt Haynos 是 IBM WebSphere Extended Deployment 的产品经理。此前,他一直在 IBM 的网格计算小组中工作,当初他加入该小组时,网格技术还刚刚起步;他在该小组中负责多项工作,包括与构建 IBM 网格计算业务相关的广泛计划。他在 IBM 的应用程序开发、程序指导和业务开发领域拥有多个技术和管理职位。他拥有罗彻斯特大学的计算机科学/应用数学和认知科学的学士学位,以及佛蒙特大学的计算机科学硕士学位。他与妻子和两个儿子居住在美国康涅狄格州。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款