用Java实现ESB

用JAVA实现ESB
Jeff Hanson
用SOA集成新老组件和服务需要一个能够连接任意组件或服务的基础设施,通过这个基础设施就不需要考虑组件和服务的位置、消息协议和消息格式。为了能够通过这个基础设施串联起这些服务和组件,必须作很多的客户化定制。满足上述需求的SOA基础设施我们称为“ESB”。
本文讨论的机制使得ESB的跨协议消息、消息传输、消息安全和其他面向服务的消息基础设施必需的功能更加方便。
1       企业服务总线(ESB)
ESB是一个集中式的、可升级的、容错的和基于消息服务的框架:
为架构在不同消息协议上的异构服务提供透明的通讯。
为企业应用、服务和组件提供互连互通的共享消息层。
能够同步或异步地将消息传递到服务终端,能智能的转换和保护消息内容以满足不同服务终端的要求。
应该提供错误恢复,可以传送错误消息,可测量性问题,重复消息,网络失败等等。
2       ESB的最小需求
ESB作为消息传递系统的最小需求可以用首字母的缩写来记忆“TRANS”,它把ESB作为一个软件实体来定义:
转换消息(Transform):从一个格式到另一个格式的消息转换以适应注册的服务的要求。
路由消息(Route):将消息路由到提供了QoS和服务层特征的注册的服务。
增强消息内容(Augment):比如添加关于消息请求者的元数据。增强消息协议以满足服务提供者的要求。
(Nofify)通知注册的特定消息请求的监听器。
(Secure)通过鉴定,授权,不可抵赖,机密性等来保证传递信息的安全。
2.1     转换ESB消息
ESB必须能够将数据转换成公共数据格式以便能在不同的应用、组件和服务之间进行通讯。数据格式转换可以是简单的也可能是非常复杂;因此由ESB提供转换工具应该是可插拔和可配置的。一个ESB转换的例子就是使用XSLT文档来定义接收服务的schema和请求XML消息内容之间的转换。
2.2     路由ESB消息
ESB应该可以根据许多因素(包括消息的内容)来决定消息的目的地。这可以方便地将消息路由到不同的服务,而没有把消息结构和路由逻辑耦合在一起。
被ESB消息路由的机制有:
基于XML内容的路由
基于对象所有者的路由,例如JMS使用的路由。
外部路由即在外部配置消息路由,这样路由就和消息内容分离开来。
2.3     通知消息监听器
ESB应当提供基于消息的监听能力,以便能够保证消息传输和消息内容管理的安全。
2.4     保证消息传递的安全
ESB应当保证每一个消息请求的安全,包括鉴定,授权,不可抵赖,机密性和执行类似Kerberos和WS-Security安全标准。
3       ESB的分散天性
ESB应当设计成有标准组件构成的分散的模型,以便能够快速升级来满足任何放置在它之上的消息的需求。在多个内连的运行时引擎之间都要了解ESB的分散天性。因此,每一个运行时引擎只负责处理由TRANS定义的最小功能。
每个运行时引擎都包括:管理器,基于目的地的媒介器列表和命名空间目录。
3.1     ESB管理
每一个运行时引擎都保留一个管理器,这个管理器处理管理功能,比如服务供应,服务注册,服务发现,消息日志,测量和监控。
3.2     ESB消息媒介
每一个运行时引擎也都保留一个媒介器列表;每一个媒介器总是一对一的和目的地关联。媒介器负责在消息到达目的地之前处理(转换、增强和安全)消息。在转换、增强和安全每一个消息后,媒介器将这些消息路由到目的地。
图1是在较高层次解释ESB组件间的关系和内部交互的视图。
4       信息处理模型
对信息的处理有三种模型:asynchronous, synchronousrequest/response
4.1     同步
同步就是阻塞调用者后续的处理,直至该消息处理完成。也就是方法调用。
4.2     异步
异步就是指类似JMS的消息队列机制来处理消息。也就是发送消息后直接返回。
4.3     请求/响应
请求响应是指类似HTTP的请求响应机制来处理消息。也就是“一问一答”方式。
5       常见的协议
通常需要支持的协议有消息协议(如JMS), 邮件发送接收(如SMTP/pop3),数据库协议(如 JDBC),网络传输协议(如TCP), HTTP, file, intra-VM等。
 
 
阅读更多
个人分类: 体系架构
想对作者说点什么? 我来说一句

esb接口开发

2017年07月26日 400KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭