用Java实现ESB

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值