让 SOA 变得更好:基础设施虚拟化
下面让我们来看一下虚拟化如何帮助我们满足上面这些需要,并改进 SOA 基础设施的体验。在这一节中,我们将重点关注任务负载、信息和服务器的虚拟化。
服务和复合应用程序中有很大一部分是它们的移动性和动态特性。生命周期很难进行手工 管理,在分布式基础设施上对其生命周期进行管理也很难。我们希望中间件来实现这种功能。因此,服务的启动和停止、复合应用程序的调度,以及对二者进行执行的能力,这些都是任务负载虚拟化和诸如 IBM 的 WebSphere? Extended Deployment 之类的产品的基本功能。
在上一篇文章中,我们曾经提到任务负载虚拟化不仅仅是调度,还是调度、任务负载管理和提供的协调。任务负载虚拟化可以在需要的地方和时间启动服务。如果任务负载的需求增加了,那么可以在其他资源上自动启动其他服务(克隆),并将任务路由到这些服务上。如果某个服务或该服务所运行的资源产生了故障,那么就可以实现相同的自动启动和任务负载重新路由。
这种方法有时称为服务虚拟化(service virtualization),其中服务供应商与服务消费者之间的交互是通过一个抽象层(在本例中,由任务负载虚拟化提供这个抽象层)进行的。随着 SOA 部署大小和规模的增大,服务虚拟化也变得日益重要。
另外,智能调度策略可以对复合应用程序或工作流进行划分,并将一些任务捆绑一起,在一个异构的分布资源池(也称为网格)上执行它们。
信息虚拟化
由于服务和复合应用程序都可以是移动的,从不同位置获得对整个企业中信息的访问是一个非常重要但却很困难的要求。智能调度(例如服务安置)可以通过在请求信息附近启动服务来减轻这个问题。然而,这需要更多的智能形式的信息访问和虚拟化。
在最简单的形式中,我们希望对数据仓库进行联合或虚拟化。我们将分布式信息考虑为一个整体的单一仓库,它具有您所期望的所有质量的服务:快速存取性能(就仿佛是本地一样)、安全性和弹性。实际上,这个过程可能正在受到实践的挑战,但是 WebSphere Information Server 将开始提供这种功能。分布式信息是信息管理市场上增长最为迅速的一个领域,这一点没什么奇怪。存取和理解信息的能力对于各种形式和规模的公司来说都具有巨大的影响。
使用 WebSphere Information Server,可以将信息作为服务进行访问。尽管这非常有用,并且在 SOA 和服务领域也很有意义,但是如果没有背后的基础设施,这是不可能的。在上一篇文章中,我们对这个基础设施(信息虚拟化)进行了讨论。信息虚拟化包含两个方面:内容和格式虚拟化;以及位置虚拟化和性能虚拟化,这是在一个基础或底层上进行构建的,可以支持元数据管理和一些基础功能,例如信息的全局命名。
内容虚拟化和格式虚拟化具有以下功能:数据转换、数据联邦、数据发现、数据清理和分析。位置和性能分析使分布式数据仿佛就是本地的,包含缓存、复制和智能数据移动和放置以及适当的服务质量。
服务器虚拟化
很多通过分布式资源提供的任务负载虚拟化都是由服务器虚拟化 在机器或集群层提供的。我们可能都听说过服务器虚拟化的概念,大部分人在听到虚拟化这个单词时都认为是服务器虚拟化。服务器虚拟化对于面向服务的架构有特殊的优点。
首先,虚拟机为服务和复合应用程序提供了一个平台中立级别。这是执行环境所使用的容器概念。例如,不同类型的服务可以在相同的物理资源上执行,而运行时依赖项(runtime dependencies)是自动提供并在运行时进行配置的。另外,我们还可以使用系统级的任务负载管理器将机器或集群资源分配给高优先级的服务和复合应用程序。
关于趋同性的讨论是怎么回事?
有些人争辩说 SOA 和基础设施虚拟化是趋同的(converging),因为它们都是可以协作的。但是如果将基础设施虚拟化看作是对 SOA 的支持,那么会更有意义。它们实际上是两件不同的事情:一个是面向应用程序架构的,另外一个是面向基础设施架构的。
结束语
在本文中,我们已经介绍了为什么说公司在自己的应用程序架构中采用 SOA 技术与在基础设施架构中采用虚拟化技术的原因非常类似,这主要是受工作负载和信息虚拟化技术的驱动。SOA 和基础设施虚拟化技术可以很好地进行协作。随着在企业中提供的服务越来越多,以及这些服务大小和规模的不断增加,实现支持这些服务的基础设施虚拟化技术也日益必要。没有基础设施的虚拟化,企业的管理就会变得非常复杂,很难实现服务的灵活性优点。