SOA 与基础设施虚拟化之间的协作、调整和关系

来源:互联网 发布:linux线程池的通用框架 编辑:程序博客网 时间:2024/04/26 09:19

原文地址
http://www-128.ibm.com/developerworks/cn/grid/gr-soavirt/index.html?S_TACT=105AGX52&S_CMP=cn-h-gr

2006 年 7 月 13 日

SOA 和基础设施虚拟化技术之间是高度协作的关系。随着企业采用的服务不断增多,这些服务的大小和规模也不断增大,实现支持这些服务的基础设施虚拟化技术也日益重要。没有基础设施的虚拟化,企业的管理就会变得非常复杂,很难实现服务的灵活性优点。在本文中,Matt Haynos 将对网格计算和 SOA 以及基础设施虚拟化技术之间的相似和不同之处进行简要分析。

在这个 “网格观点” 系列文章中,我们将介绍许多网格领域和发展趋势之间的关系。这 3 篇文章会深入介绍在网格环境中采用有效自动化和数据管理准则的重要性。其中两篇文章将探讨网格的组成(其本质),例如网格与 CORBA(Common Object Request Broker Architecture)和 P2P(Peer-to-Peer)分布式计算系统之间的异同。

网格对于不同的人来说可能意味着不同的东西,因此我们将沿着这条轨迹继续向前探讨。例如,我到现在都还会在收到有关两年前发表的本系列第一篇文章 “Perspectives on grid: Grid computing -- next-generation distributed computing” 的一些问题。

到目前为止仍然非常流行的一个概念是面向服务的架构(SOA)。eWeek (请参阅 参考资料)最近的一个主题引用了 Merrill Lynch 开展的一项 CIO 调查,其中 87% 的参与者称 SOA 是企业软件中 “下一个伟大的东西(the next big thing)”。(就我个人来说,我认为 SOA 早已 非常伟大了。)

不用奇怪 CIO 为什么对 SOA 如此关注。业务的变化和压力变得日益激烈,而且已经扩展到了全球范围。现在出现了对新业务种类和操作模型的需求。在 IBM 2006 Global CEO Study(请参阅 参考资料)上,2/3 的业务领袖们表示会在最近两年内 “从根本上改变” 自己的公司形式。他们之所以需要如此迅速地进行改变是由于以下的原因:市场上的一流公司通常都占据着重要的位置,瓜分了市场的大部分份额,而机会变化的是如此迅速,可能稍纵即逝,因此面市的速度至关重要。

但是要做到这一点并非如此简单。至少对于 CIO 来说是如此。他们不得不应付各种架构、接口和技术,这些可能会限制他们提供技术基础设施的能力,而这种能力可以支持(甚至促进)他们对动态竞争市场的响应能力。

正是在这种背景之下,SOA 诞生了。SOA 使用了一种架构性的方法来将应用程序分解为各种必要的服务。然后可以设计这些服务,用它们来呈现或映射业务流程。有关 SOA 及其联合 IT 实践和业务策略的使命已经有了很多介绍,因此在这里我们就不再详细介绍了。但是 SOA 正在迅速成为企业可以对动态变化的市场有效进行响应并充分利用新业务商机的关键。

关于虚拟化

在本系列的上一篇文章中,我们介绍了网格与虚拟化之间的关系,并阐述了网格就是 虚拟化的观点。尽管虚拟化是目前一个热门的基础设施话题,但实际上它已经存在很长一段时间了。虚拟化在 IT 基础设施领域内是普遍存在的,例如,在微处理器、虚拟内存和服务器虚拟化领域,我们都可以看到虚拟化的影子。在 IT 基础设施领域内,尚未 进行虚拟化的地方并不多,我们将整个虚拟化集合称为基础设施虚拟化(infrastructure virtualization)。请参见图 1。


图 1. IT 基础设施中虚拟化的例子和级别
IT 基础设施中虚拟化的例子和级别

新的思想是任务负载(或应用程序)虚拟化和信息虚拟化,它们具有特殊的优点,可以与 SOA 协作使用。这些领域都涵盖了网格计算的实质,可以体现出为什么网格可以包含到基础设施虚拟化这把大伞下面。这些领域也是 SOA 接口所参与和涉及的主要虚拟化领域。





回页首

高级协作和调整

在这一节中,我们将在一个较高的级别上定义 SOA 和基础设施虚拟化(尤其是任务负载和信息的虚拟化)之间的协作。这里非常有趣的一个地方是,很多公司都是因为一些类似的原因才在自己的应用程序架构中采用 SOA 并在整个基础设施上使用虚拟化技术的。很多原因和驱动力都非常相似。下面就让我们来看一下。

横向协作

第一种协作思想是横向协作(horizontal integration),它打破了纵向协作的限制,使整个企业朝一个更为全球化协作的企业发展。考虑一下公司内部(或公司之间,可能是小公司,甚至是中等或大型公司)的标准功能和实践情况。

在这些共同的(全球)业务流程之上,SOA 通过消除冗余服务打破了应用程序的纵向限制,并在每个业务单元中得以实现。当然,要理解和实现集成业务流程必须要有一些准则,但是一旦实现之后,即使只实现部分准则,SOA 就可以帮助我们将应用程序及其必要服务与全球业务策略和过程统一在一起。结果,通过开发自己特有的服务,并将其加入全球设计的业务流程(通常称为工作流复合应用程序),业务单元可以继续进行创新 。

基础设施虚拟化通过将计算或信息资源看作一个实体(而不关心这些资源的属主或位置)打破了基础设施的纵向限制。尽管一个公司可能有多个物理基础设施(例如数据中心),但是这些基础设施正在被当作一个逻辑基础设施进行管理。例如,我们在 IT 外购竞争中越来越多地看到了这种趋势,在这种竞争中,任务可以从一个数据中心迁移到另外一个数据中心。

敏捷性

敏捷性(Agility) 是可以快速响应的能力。我们在前面的文章中已经介绍过敏捷性的问题。敏捷性可能是目前公司中最为重要的 IT 驱动力。SOA 可以通过快速部署新服务并将其提供给消费者和复合应用程序使用来提高公司的敏捷性。重用的概念在这里非常重要,它是 SOA 的一个基本元素。公司可能会错误地从头开始创建新服务,因此通过将应用程序分解成各种必要服务或通过将应用程序在服务上下文中进行封装,就可以快速重用现有实现了。

相同的概念同样适用于基础设施。此处的思想是快速部署基础设施资源,并使它们可快速用于支持新的业务需求和机会。虚拟化在资源和用户之间提供了一个绝缘层,因此可以删除它们之间的紧密绑定。这种松耦合关系让公司可以添加资源,使基础设施可以识别出这些资源并将它们快速提供给消费者使用。

启用灵活性

业务灵活性与敏捷性是紧密相关的。与大多数人一样,公司也喜欢让自己经营的东西一直保持可用状态。SOA 通过服务的概念来实现这种功能。替换带有定义良好的接口的服务可能非常容易,添加新服务也很容易。SOA 支持动态应用程序构建(或 mash-up)的概念,这样就可以用一些有趣或创新的方式来构建服务。企业服务总线(ESB)尤其有用,因为它们为服务到服务的通信提供了一个框架或交换场所。

存储虚拟化是基础设施虚拟化灵活性的一个很好的例子。例如,IBM® SAN Volume Controller 为存储提供了一个虚拟表示形式,允许公司在性能或技术改进或价格降低时替换底层的存储设备。这个过程可以快速实现,而不会影响应用程序或其他用户。

简单性

SOA 和基础设施虚拟化的一个关键优点是降低了复杂性。在图 2 中我们可以形象地看到这一点。应用程序架构的 SOA 方法将整个紧密耦合的大块应用程序划分成一系列的服务,其中各个功能都被清晰地划分出来。复杂的相互依赖关系被消除了。另外,企业不同领域中的功能的冗余实现都有可能被标准化。SOA 承诺要降低企业应用程序架构中的复杂性,但是它也要遵守一定的准则。


图 2. SOA 和虚拟化:减少复杂性
SOA 和虚拟化:减少复杂性

这同样适用于基础设施的虚拟化。通过在物理资源和用户之间引入一个抽象层,SOA 和基础设施虚拟化都可以独立进行管理。如果资源失效,新物理资源就可以接管它的逻辑位置。如果出现了更好的资源,旧的资源就可以退休了。结果,不用让用户或应用程序依赖于任何给定的物理资源,就可以实现基础设施的灵活性。

基础设施对于服务和复合应用程序的需求

现在我们已经分别阐述了 SOA 和虚拟化对于应用程序和基础设施架构的相似性,下面让我们来看一下服务和复合应用程序对基础设施的具体需求。服务和复合应用程序具有特定的属性,可以让虚拟化技术成为 SOA 基础设施的坚实基础。

服务特性:

  • 服务是移动的,可以从一台虚拟机移动到另外一台虚拟机上。
  • 服务可能只存在一段短暂的时间。
  • 服务需要根据需要来启动或停止。
  • 服务需要对信息和数据进行存取,它具有特定的分支,因为服务是移动的。
  • 服务具有典型的服务质量(QoS)需求,例如安全性和弹性。

复合应用程序的特性:

  • 复合应用程序也可以是移动的。
  • 复合应用程序可以作为一个作业交互式运行,也可以通过编程控制其运行。
  • 复合应用程序可以进行调度,这非常重要,因为它们通常都呈现为具有相互依赖的任务的工作流。
  • 复合应用程序可以进行划分,且有可能并行运行。

让 SOA 变得更好:基础设施虚拟化

下面让我们来看一下虚拟化如何帮助我们满足上面这些需要,并改进 SOA 基础设施的体验。在这一节中,我们将重点关注任务负载、信息和服务器的虚拟化。

服务和复合应用程序中有很大一部分是它们的移动性和动态特性。生命周期很难进行手工 管理,在分布式基础设施上对其生命周期进行管理也很难。我们希望中间件来实现这种功能。因此,服务的启动和停止、复合应用程序的调度,以及对二者进行执行的能力,这些都是任务负载虚拟化和诸如 IBM 的 WebSphere® Extended Deployment 之类的产品的基本功能。

在上一篇文章中,我们曾经提到任务负载虚拟化不仅仅是调度,还是调度、任务负载管理和提供的协调。任务负载虚拟化可以在需要的地方和时间启动服务。如果任务负载的需求增加了,那么可以在其他资源上自动启动其他服务(克隆),并将任务路由到这些服务上。如果某个服务或该服务所运行的资源产生了故障,那么就可以实现相同的自动启动和任务负载重新路由。

这种方法有时称为服务虚拟化(service virtualization),其中服务供应商与服务消费者之间的交互是通过一个抽象层(在本例中,由任务负载虚拟化提供这个抽象层)进行的。随着 SOA 部署大小和规模的增大,服务虚拟化也变得日益重要。

另外,智能调度策略可以对复合应用程序或工作流进行划分,并将一些任务捆绑一起,在一个异构的分布资源池(也称为网格)上执行它们。

信息虚拟化

由于服务和复合应用程序都可以是移动的,从不同位置获得对整个企业中信息的访问是一个非常重要但却很困难的要求。智能调度(例如服务安置)可以通过在请求信息附近启动服务来减轻这个问题。然而,这需要更多的智能形式的信息访问和虚拟化。

在最简单的形式中,我们希望对数据仓库进行联合或虚拟化。我们将分布式信息考虑为一个整体的单一仓库,它具有您所期望的所有质量的服务:快速存取性能(就仿佛是本地一样)、安全性和弹性。实际上,这个过程可能正在受到实践的挑战,但是 WebSphere Information Server 将开始提供这种功能。分布式信息是信息管理市场上增长最为迅速的一个领域,这一点没什么奇怪。存取和理解信息的能力对于各种形式和规模的公司来说都具有巨大的影响。

使用 WebSphere Information Server,可以将信息作为服务进行访问。尽管这非常有用,并且在 SOA 和服务领域也很有意义,但是如果没有背后的基础设施,这是不可能的。在上一篇文章中,我们对这个基础设施(信息虚拟化)进行了讨论。信息虚拟化包含两个方面:内容和格式虚拟化;以及位置虚拟化和性能虚拟化,这是在一个基础或底层上进行构建的,可以支持元数据管理和一些基础功能,例如信息的全局命名。

内容虚拟化和格式虚拟化具有以下功能:数据转换、数据联邦、数据发现、数据清理和分析。位置和性能分析使分布式数据仿佛就是本地的,包含缓存、复制和智能数据移动和放置以及适当的服务质量。

服务器虚拟化

很多通过分布式资源提供的任务负载虚拟化都是由服务器虚拟化 在机器或集群层提供的。我们可能都听说过服务器虚拟化的概念,大部分人在听到虚拟化这个单词时都认为是服务器虚拟化。服务器虚拟化对于面向服务的架构有特殊的优点。

首先,虚拟机为服务和复合应用程序提供了一个平台中立级别。这是执行环境所使用的容器概念。例如,不同类型的服务可以在相同的物理资源上执行,而运行时依赖项(runtime dependencies)是自动提供并在运行时进行配置的。另外,我们还可以使用系统级的任务负载管理器将机器或集群资源分配给高优先级的服务和复合应用程序。

关于趋同性的讨论是怎么回事?

有些人争辩说 SOA 和基础设施虚拟化是趋同的(converging),因为它们都是可以协作的。但是如果将基础设施虚拟化看作是对 SOA 的支持,那么会更有意义。它们实际上是两件不同的事情:一个是面向应用程序架构的,另外一个是面向基础设施架构的。

结束语

在本文中,我们已经介绍了为什么说公司在自己的应用程序架构中采用 SOA 技术与在基础设施架构中采用虚拟化技术的原因非常类似,这主要是受工作负载和信息虚拟化技术的驱动。SOA 和基础设施虚拟化技术可以很好地进行协作。随着在企业中提供的服务越来越多,以及这些服务大小和规模的不断增加,实现支持这些服务的基础设施虚拟化技术也日益必要。没有基础设施的虚拟化,企业的管理就会变得非常复杂,很难实现服务的灵活性优点。





回页首

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文

  • 有关 Merrill Lynch 所进行的 CIO 调查的结果,请参阅 “Survey: SOA In Vista Out”,其中 87% 的被调查者都认为 SOA 是企业软件中 “下一个伟大的东西”。

  • Expanding the Innovation Horizon Global CEO Study 2006” 解释说 2/3 的业务领袖们表示会在最近两年内“从根本上改变”自己的公司形式。

  • 有关网格计算和诸如 P2P、CORBA 和集群计算之类的分布式计算系统之间的异同的粗略分析,请参阅 “Perspectives on grid: Grid computing -- next-generation distributed computing”。

  • 最近的 BusinessWeek 封面故事 “Speed Demons” 表示,面市速度现在是 “终极竞争武器”。

  • 有关如何在 SOA 基础上构建网格应用程序的更技术性的说明,请参阅 “基于 SOA 构建网格应用程序”。

  • SOA 方法的详细场景和最佳实践可以在 developerWorks 中国网站 SOA 和 Web 服务专区 中找到。

  • 有关网格计算背后的技术的整体视图以及从技术角度对其目标的阐述,请参阅 “网格观点: 整体大于局部之和 ”。

  • The Globally Integrated Enterprise (PDF)” 对跨国公司向全球综合企业的转型进行了归纳。

  • 请访问 developerWorks 中国网站 网格计算专区,这里有丰富的信息,可以帮助您使用网格计算技术来开发应用程序。


获得产品和技术

  • product documentation for WebSphere Extended Deployment(英文) 介绍了 WebSphere ObjectGrid。

  • 请参阅 IBM TotalStorage SAN Volume Controller 的产品概述。

  • 使用 IBM 试用版软件 构建您的下一个开发项目,可以从 developerWorks 上直接下载该软件。


讨论

  • 在 developerWorks 网格计算论坛(英文) 中与其他人交换您的想法。

  • 通过参与 developerWorks blogs(英文) 加入 developerWorks 社区。





回页首

关于作者

作者

Matt Haynos 是 IBM Grid Strategy and Technology 小组的程序总监,这个小组的总部位于纽约 Somers。他在该小组中负责多项工作,其中包括与构建 IBM 网格计算业务相关的大量活动。他在 IBM 的应用程序开发、程序指导和业务开发领域拥有多个技术和管理职位。他拥有罗彻斯特大学的计算机科学/应用数学和认知科学的学士学位,以及佛蒙特大学的计算机科学硕士学位。他与妻子和两个儿子居住在美国康涅狄格州。