【IT168 SOA文档】
SOA已经成为实现各种IT业务价值的规范。基于SOA的方案可以提供很好的敏捷性、松耦合性和基于组件的方法(composition-based),这些优势使方案对业务需求有更好的适应性、更少的操作成本,并使标准设备有更好的可插入性(pluggability)。服务只是实现某种功能的业务单元的抽象,比如定购、收集客户信息,或者修改个人信息等功能。理论上,可以通过任何含有请求/应答参数或自组网(ad-hoc)数据的绑定/协议/接口对这些服务进行访问。基于标准的服务将以XML格式构建有效负载(payload)。
在传统的老式结构中,业务功能是以封包或有预定义的用户接口的应用程序实现。在SOA中,如果将这些传统的“封闭式”业务功能放在相当大的实体中,并使用更现代化的交互机制,它们将发挥更大的价值。要实现这些业务功能的真正解放,需要将传统的信息技术基础设施以新的技术成份为基础进行转换。新的服务基础结构有两个主要作用:服务代理(service brokering)和网守(gatekeeping)。当然,还有一些其它辅助作用,包括知识储存库(repository)、终端管理,以及诸如流程编排的高层次运用。本文将详细讨论服务代理和网守这两个主要作用,以及实现这些作用的各种技术部分。
服务基础架构的主要作用
1. 服务代理
服务代理是SOA成功的关键。服务代理的作用是将访问转移到相应的业务功能,并且可以实现复杂的集成模式,比如外部服务(service fa?ade),消息聚集(message enrichment),消息过滤(message filter),内容路由(content-based routing),动态路由(dynamic routing)和分离-聚合器(splitter-aggregator)。服务代理还负责协议桥接、消息传输,以及各种消息模式的桥接等任务。它也可以根据消息或请求的内容进行访问授权。
2. 网守
网守的功能类似于网络安全中的防火墙,有时也称为XML防火墙,主要用来阻止恶意请求以保护业务服务。在安全方面,只要认证请求是显式传入的,网守就是第一道防护线。另外,网守还可以验证(定义的XML模式)请求、限制对服务的访问,以及阻止可能导致阻断服务(denial of sevice)的攻击。
实现新功能的各类方案
随着SOA的兴起,各技术供应商针对新服务基础架构的需求提供了各种各样的方案。Web服务管理(WSM)供应商将主要精力放在业务服务终端管理方面。硬件设备供应商通过XML防火墙及随后增加的各种安防功能来宣告占领周边领域。其它进行过消息或企业应用集成(EAI)开发的技术供应商则或发展其服务策略,或用其专门技术创建基于软件的中间件方案:企业服务总线(ESB)。由于当时没有一种全面的解决方案,以上三种产品在架构实现中都发挥着重要的作用。
随着各方案逐渐走向成熟,它们都开始努力实现我们现在所了解的ESB功能。Web服务管理工具没有在消息与服务中介方面取得显著进展,但新兴的硬件设备可以作为服务中介和集成设备的替代品。
下面我们来看一下这些硬件设备和软件ESB,它们的特征,以及各种方案在服务基础结构中的优缺点。
1. 硬件设备
很难对所有的硬件设备进行归纳分类。市场上有许多设备;你也可以在http://en.wikipedia.org/wiki/XML_appliance上找到一个有代表性的列表。
通常这些硬件设备有以下显著特点:
- XML加速(XML acceleration):通过芯片集的支持,这些设备可以进行快速的XML处理,比如消息传输和模式验证。
- 快速的SSL卸载(SSL offloading)、负载(payload)的解密与加密:由于可以使用“在线(on the wire)”技术,这些设备再一次展现了在这种操作方面的优势。
- XML防火墙:这些设备使XML防火墙的功能得到进一步提升。它们还支持验证机制,保证发出请求的实体确实是合法实体。
- 简易的设置和操作:由于是预先定制好的封闭式设备,限制了对设备内部的访问并没有周边连接,所以很容易在IT基础设施中进行设置。也有同样简单的基于网络的设置方法。
说完优点,随后便是缺点。这些硬件设备有以下难以解决的弊端:
- 升级和更新:固件升级,特别是生产环境内的固件升级,可能导致严重故障。这也使得硬件设备在支持最新的SOA标准的时候显得无力。
- 无法摆脱硬件与芯片集的束缚:这种设备无法利用新兴的硬件技术。你将无法摆脱你开始选用的硬件。摩尔定律终将使所部署的设备过时并使设备性能变得迟钝。
- 设备扩散:过多的硬件设备将导致离散的硬件扩展和更高的数据中心成本。这个方案无法利用可以降低能源消耗并得到高效方案的软件虚拟化的方法。
- 集成限制:虽然这些设备有时是用作集成设备,但其对复杂的集成模式的支持是有限的(这也是在支持的前提下)。另外在使用软件(编码)出口(software exit)时也没有很好的扩展性。
- 与软件开发过程脱节。
应该注意的是,已经出现了一些专门用于解决服务基础架构中niche问题的硬件设备。
2. 软件ESB
企业服务总线的概念是从企业应用集成(EAI)中广泛使用的消息总线中形成的。由于继承了EAI的部分功能,并使用企业级消息接发,以及良好的软件开发周期,软体ESB获得了以下优点:
- 灵活性(Flexibility):它们支持极其复杂的集成模式。它们不仅支持标准的连接,还可以服务重用的方式使用传统的或封装的应用程序中的业务功能。它们能更好地支持新兴标准并仍在迅速发展中。
- 健全的软件开发周期:软件ESB通常都有一个有健全的调试、追踪能力以及整合了源码控制环境的集成的开发环境。可以将软件ESB中新的消息流作为整体软件开发过程中的一个环节进行部署。
- 与架构工具之间有良好的互操作性:为表明这个观点,我们来看一下服务组件架构(SCA),它是一个用SOA方案构建系统的模型。通过SCA标准,软件ESB可以利用架构师设计的服务装配模型(SAM)对服务集成进行建模。SCA是一种用来组合部署服务网络的语言无关的规范。

图1:服务装配模型
-
与服务注册库和储存库(service registries and repositories)的紧密结合:这样便能在部署消息流及自动服务关联时引入强力治理。

图2:通过元数据储存库进行服务关联
- 虚拟化的环境:软体ESB一个最大的优势是可以利用虚拟化技术大量减少数据中心以充分利用物理硬件并减少操作成本。
当然,软件ESB也有缺陷。它不能以最大线速处理XML;缺少网守功能并在设置时需要依赖硬件。使用硬件设备作为ESB的协处理器可以减少线速限制的影响。
参考架构(Reference Architecture)
从前面的讨论可以清楚地看到,硬件设备很适合简单、高流量、可重复的代理运作。它以边界网关的方式实现网守功能。另外,软件ESB适用于提供服务代理、复杂的消息处理,以及全面的集成功能。

图3:网守与服务代理的概念结构
价值百万美元的问题:如何选择
回到文章的主题,到底应该为我们的SOA选择什么,硬件设备还是软件ESB?答案很简单:“看情况!”
如果服务代理和集成是项目的主要目标,特别是当服务的使用范围是在企业内部时,你可以从软件ESB开始。对于企业单元内部较小规模的部署来说,可能只用软件ESB就足够了,然后用比较传统的网络防火墙补充网守的功能。
如果周边的安全性比较重要,服务使用者处于外联网或者不同的企业,并且服务是可重用的,就从硬件设备开始。虽然对集成需求不高的小型企业来说,服务代理功能可能也已经足够了。但最终还会由于设备的灵活性不足和对复杂集成模式支持的缺乏导致对软体ESB的需求。
硬件设备是完美的周边网守,而软件ESB是完全的服务代理。完备的基础设施都会在周边部署基于硬件设备的方案的同时使用软件ESB进行服务中介、路由、协议桥接以及服务/应用集成。并且在SOA完全成熟后,硬件设备和软件ESB最终都将发挥完全不同的重要作用。
还应该注意,由于许多公司中烟道式(stove-piped)企业结构的存在,联合式(federated )ESB是不可避免的。因为这些不同供应商提供的ESB产品可以很容易地满足硬件设备和软件ESB的要求,所以各企业或各应用领域可以部署截然不同的ESB。