ESB是什么
ESB的定位是服务交互基础设施,形成服务使用者->ESB服务Proxy->服务提供者的生物链:
- 解耦中介:客户对实际服务提供者的身份、物理位置、传输协议和接口定义都是不知道也不关心的,由ESB充当解耦的中介。
ESB平台实现协议转换(WebService,Http,JMS...),消息转换(转换、充实、过滤),消息路由(同步/异步、发布/订阅的消息转发、基于内容的路由与过滤、分支与聚合路由)。
- 服务中介:ESB平台作为中介,为服务交互中的基础服务,包括:
QOS(异常处理,故障转移与重试,负载均衡,流量控制,缓存,事务控制,加密传输)
服务管理监控(服务调用及消息数据记录,性能记录,系统及服务的状态监控)
统一安全管理(这个有点理想主义)。
- 服务编排:多个服务进行编排形成新的服务。
ESB支持一个直观的形式定义新组合服务的流程(工作流、BPEL 或 代码级编排)。
ESB 的一种定位是作为多个服务间交互的底层中介设施,主要使用前两种功能快速定制。
另一种定位则是一个需要与多个外系统交互的服务系统的基础设施和编程模型,使用全部三种功能并编写大量业务代码。
ESB架构
Transport:各种协议的输入输出,与核心统一消息类型(Header,Payload)的转换,支持轮询,消息驱动,同步/异步等消息消费模式。
Processor :
- 数据转换:数据的校验与转换。
- 业务处理器:在ESB中的业务组件。
- 中介处理器: 负载均衡,故障转移,流量控制,缓存,异常处理与重试,事务,安全,性能记录,调用日志记录。
- 路由器:基本路由器,组合路由器(BPEL、工作流或代码级编排)
平台还提供了端口与路由集中定义文件,线程池管理系统,JMX监控等基础设施。
ESB实现
开源ESB实现
开源轻量级ESB
商业ESB
- BEA AquaLogic
,作为ESB概 念比Mule纯粹,同时使用JMS作为message flow的底层,在Weblogic上实现HA,群集和监控管理界面。但路由编排再次走了图形编程+XML Context(XQuery)的老路,相当鸡肋。
- IBM(Message Broker, Websphere ESB,DataPower),
Misc