浅谈基于SOA的虚拟化技术

一、SOA简述

SOA(Service-Oriented Atchitecture,面向服务的体系结构)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。简单的说,SOA是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。

SOA伴随着无处不在的标准,为企业的现有资产或投资带来了更好的重用性。SOA能够在现有的和最新的应用之上创建新型应用;SOA能够消除服务消费者因服务实现的改变所带来的影响;SOA能够升级单个服务或服务消费者而无需重写整个应用,也无需保留不再适用于新需求的现有系统。总而言之,SOA以借助现有的应用来组合产生新服务的敏捷方式,提供给企业更好的灵活性来构建应用程序和业务流程。

在技术层,实现SOA已从原先的CORBA方式升级为现在的基于XML语言的WSDL文档描述方式。采用SOA的一个最大的好处就是:服务消费者可以首先根据服务的WSDL定义来查询一个或多个满足他们需求的服务,然后用新的方式把服务组织起来,以实现新的服务功能。

二、虚拟化的定义及解决方案

虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不足真实的基础上运行,是一个为了简化管理。优化资源的解决方案。

虚拟化目前有两种解决方案:软件解决方案和硬件解决方案。在软件虚拟化解决方案中,存在需要二进制转换的额外通信层,以通过提供到物理资源的接口模拟硬件环境,然而这种转换必然会增加系统的复杂性,硬件虚拟化技术可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大提高了性能。

在IT基础设施领域内,尚未进行虚拟化的地方并不多,他们包括服务器虚拟化、任务负载虚拟化、芯片虚拟化、存储虚拟化、信息虚拟化和网络虚拟化等。所有这些方面的虚拟化已经在深刻影响着IT领域的发展,甚至催生了许多新型的IT业务模式,比如各种类型的应用网格,比如全新的诸如SaaS之类的软件交付形式。

三、SOA与虚拟化的融合

SOA和虚拟化之间有一种高度协作的关系,尽管SOA已经是家喻户晓的软件技术,但是随着企业采用的服务不断增多以及这些服务的规模不断增大,实现和支持这些服务的基础设施虚拟化技术也就日益重要,没有基础设施的虚拟化,企业的管理就会变得非常复杂,很难实现服务的灵活性。因此,可以说,虚拟化和SOA之间是相辅相成、相互影响的。

虚拟技术可灵活调配计算资源、简化硬件管理,从而使SOA突破传统应用平台限制,以数码形式捕捉各种企业能力并使其可用于再配置和再连接,从而满足不断变化的企业需求。SOA与虚拟化的融合可协助构建有利于IT整合与标准化的高度灵活的系统,从而使企业 IT资源更为集成进而实现企业绩效的最优化,对于在一个虚拟化平台上搭建SOA应用,有三种方式可以选择:

1.硬件虚拟化:通过软件方式或者硬件方式将服务器的硬件分成2个或者多个单独的区,每个区都可以安装相同或者不同的操作系统,区与区之间互不影响.

2.终端虚拟化:通过分流、虚拟化以及桌面代理技术,即时设置和保护终端环境.同时降低成本并提高工作效率.

3.服务虚拟化:为建立和管理复杂的服务生态环境提供一个通用的基础设施,开发人员只把重点放在建设新的功能方面,不用担心这些功能以后将如何暴露、消费和管理。

四、虚拟化在SOA中的应用

虚拟化使SOA变得更为强大,主要体现在以下三个方面:

1.基础设施虚拟化:服务中有很大一部分具有移动性和动态特性,从而在分布式基础设施上对其生命周期进行管理也很难,因此我们可以通过对中间件进行虚拟化来实现这种功能。

2.信息虚拟化:由于服务具有移动性,因此从不同位置获得对整个企业中信息的访问是一个非常重要但却很困难的要求。我们可以通过对智能形式的信息访问进行虚拟化来请求信息附近启动服务从而减轻这个问题。

3.服务器虚拟化:服务器虚拟化对于面向服务的架构有特殊的优点,它可在机器或集群层通过分布式资源提供任务负载虚拟化。

以下将通过ESB(Enterprise Service Bus,企业服务总线)的例子来说明虚拟化在SOA中的应用。

ESB越复杂,所要从虚拟化技术中获取的价值就越多,这意味着IT对流程的依赖程度越高。采用基于虚拟技术和ESB的IT架构在支持动态业务环境的同时,在利用IT资源、提高业务流程的效率方面也大有作为,虚拟化技术能够在至少以上提到的三个领域对ESB 进行深度融合。

1.基础设施虚拟化:由于服务中有很大一部分具有移动性,因此虚拟机为服务提供了一个中立级别的平台,不同类型的服务可以在相同的物理资源上执行。

2.信息虚拟化:由于服务是可以移动的,这就需要更多的智能形式的信息访问和虚拟化。信息虚拟化通常在一个基础或底层上进行构建,支持元数据管理和一些基础功能。

3.服务虚拟化:要求在需要的地方和时间启动服务,如果任务负载的需求增加了或产生了故障,那么可以在其他资源上自动启动相关服务,并将任务路由到这些服务上,即在机器或集群层通过分布式资源提供任务负载虚拟化。

五、结语

在本文中,我们已经简要介绍了SOA的概念及特点、虚拟化的概念及解决方案,进而我们引出了对在SOA 中融合虚拟化的方式及具体应用的描述。现实中,SOA和基础设施虚拟化技术可以很好地进行协作,随着在企业中提供的服务规模和数量的增大,以及英特尔、微软等国际知名软硬件企业对该领域研发和竞争的不断深入,虚拟化必将成为SOA未来发展的一个重要方向。