服务器 频道

虚拟化是 SOA 环境的基础

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

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

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

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

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

  关于虚拟化

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

  图 1. 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 基础设施的坚实基础。

  服务特性:

  " 服务是移动的,可以从一台虚拟机移动到另外一台虚拟机上。

  " 服务可能只存在一段短暂的时间。

  " 服务需要根据需要来启动或停止。

  " 服务需要对信息和数据进行存取,它具有特定的分支,因为服务是移动的。

  " 服务具有典型的服务质量(QoS)需求,例如安全性和弹性。

  复合应用程序的特性:

  " 复合应用程序也可以是移动的。

  " 复合应用程序可以作为一个作业交互式运行,也可以通过编程控制其运行。

  " 复合应用程序可以进行调度,这非常重要,因为它们通常都呈现为具有相互依赖的任务的工作流。

  " 复合应用程序可以进行划分,且有可能并行运行。

 

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

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

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

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

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

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

  信息虚拟化

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

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

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

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

  服务器虚拟化

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

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

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

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

  结束语

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

0
相关文章