技术开发 频道

ESB如何帮助您满足SOA解决方案的需求

    中介流

    为了支持服务请求者和提供者之间的交互所必需的服务虚拟化和面向方面的连接,ESB 提供了中介流。中介流(通常简称为中介)包括通过某个接出点接收来自请求者的入站请求消息,处理请求消息,然后使用某个接入点向提供者发送出站消息。如果适用的话,中介还可以包括接收相关的入站响应消息,处理相关的响应消息,以及向请求者发送出站响应消息。

    解决方案中的中介流可根据复杂性的不同(从非常简单到非常复杂)而变化各异。中介流还可以具有不同的可重用性,从特定于单个交互,到适用于某个解决方案中甚至跨解决方案的所有交互。中介流中执行的某些类型的消息处理往往是高度可重用的。这些经常出现、高度可重用、定义良好的消息处理类型称为中介模式。ESB 产品可以提供一个或多个预先构建的中介模式。提供多个预构建中介模式的 ESB 产品提供了一个中介框架,此框架支持通过组合中介模式来创建中介流。

    中介流如何实现服务虚拟化?协议和模式的虚拟化意味着不同通信协议和交互模式之间的转换。如果某个 ESB 同时拥有用于两种协议的接入点和接出点或绑定,则该 ESB 只能在这两种协议中的一种协议与另一种协议之间转换。交互模式之间的转换可能本来就具有对入站或出站协议的支持,或者可能需要附加的处理。例如,从使用 SOAP/HTTP 的入站单向请求到使用基于队列的协议的出站单向请求的转换(其中消息模型相同)是固有的,因为基于队列的协议本来就是单向的。相反,使用 SOAP/HTTP 的入站同步请求/应答,到使用基于队列的单向请求和单向应答的出站异步请求/应答之间的转换,将要求中介流支持基于队列的请求和应答之间的相关性。与转换相关的中介模式包括接入点和接出点以及相关性模式,不过由于相关性是中介流的核心,在许多情况下,中介框架都隐含地包括了相关性模式。

    接口的虚拟化要求 ESB 支持服务请求者和提供者定义的消息模型之间的句法转换。使用一种消息模型的服务请求者发送的入站消息,可能必须转换为服务提供者所需的特定消息模型,并且任何响应消息也都必须进行转换。与转换相关的中介模式包括支持单个元模型的模式(例如 XSLT)、支持多个元模型更通用的“任意到任意”转换模式,以及其他形式的消息处理,例如消息充实和消息筛选(更改语法而不是语义)。

    身份的虚拟化要求 ESB 支持各种形式的路由。路由使 ESB 可以基于请求时的条件,将来自服务请求者的消息发送到静态(例如,在部署时)或动态选择的服务提供者。路由中介流涵盖从非常简单到非常复杂的情况。例如,简单的路由中介流可能除了提供一个不同的提供者地址外,其他什么也不做;该地址可能来自某个在部署时设置的属性。较复杂的路由中介流可能执行以下任务:

    访问某个注册中心,以了解请求者的需求和潜在提供者的供给。
    使用复杂的匹配算法来确定“正确”的提供者。
    执行上面讨论的各种转换和变换。

    与路由相关的中介模式允许进行简单地址操作、各种形式的注册中心访问和各种形式的决策。更大粒度的路由模式可以帮助实现不同的服务质量;例如,提供请求重试和故障转移,甚至基于从服务注册中心提取的策略来对请求者和提供者进行动态匹配。ESB 可以支持更复杂和更成熟的路由模式,例如请求的分发和响应的相关性聚合,甚至是复杂的事件处理。

    中介流如何实现面向方面的连接?中介流可以简单地记录某个请求已从请求者传递到了提供者,阻止来自未知或未经授权的请求者的请求,或者基于提供者可用性来阻止请求。相关中介模式包括适合于解决方案的审核和日志记录。其他中介模式提供了对安全和管理策略定义点的直接或间接访问,以便中介流能够执行适当的控制。

    通过此讨论,可以清楚看到许多中介流可能由支持各种形式的服务虚拟化和面向服务的连接的中介模式组成。各个中介模式被适当地放在中介流中以实现预期的交互目标,以及执行管理和安全策略。

    SOA 生命周期和 ESB

    面向方面的解决方案的一个关键元素是其组成部分的生命周期。下面研究一下 SOA 生命周期如何适用于 ESB。在图 6 中,您可以看到 SOA Foundation 生命周期。


    图 6. SOA Foundation 生命周期
     


    模型阶段包括以下活动:

    通过分析服务请求者和提供者的交互来收集互连和元数据要求;相关需求和供给可以在注册中心进行描述。
    对支持所需互连所必需的中介流进行建模和设计。

    组装阶段包括以下活动:

    从较小粒度的中介模式组合成中介流。可以将中介模式作为 ESB 产品的一部分预先进行构建。这些中介模式可存在于企业特定的资产存储库中。或者,这些中介模式可以是为解决方案新开发的。
    在服务注册中心存储关于中介的元数据以供服务请求者使用。该元数据描述相关的连接方面,例如安全性。

    部署阶段包括以下活动:

    配置用于部署到特定运行时拓扑中的中介;部分必需的配置信息将作为服务元数据存储在注册中心。
    将中介部署到一个或多个运行时环境。
    修改服务元数据以影响解决方案的动态行为。

    管理阶段包括以下活动:

    监视使用中介模式的服务交互的行为。
    作为安全和管理服务以及注册中心的策略执行点,对服务交互进行管理和保护。

    ESB 在面向服务的解决方案的治理流程中起着间接的作用,因为治理驱动着用于安全、管理和服务交互性的策略。正如已说明的那样,ESB 可以用作这些方面的策略执行点。还必须将 ESB 考虑进治理决策中。例如,治理流程确定哪些服务可通过 ESB 进行访问以保证松散耦合,从而确定要在 ESB 中部署哪些中介。

0
相关文章