ESB (Enterprise Service Bus)即企业服务总线。传统中间件技术与XML、Web服务等技术相结合的产物。
作用:充当使用不同数据和消息格式、网络协议和编程语言的服务之间的“粘合剂”,充当服务使用者和服务提供者之间的中间层。
与SOA的关系:ESB就是在SOA架构中实现服务间智能化集成与管理的中介。如下图:
图解-ESB实际上更像是企业消息总线,当所有的服务都在总线上的时候,服务调用实际上是一种消息调用。
ESB具体应用中的两个作用:
解耦中介--
由ESB充当解耦的中介,使得服务消费者对实际服务提供者的身份、物理位置、传输协议和接口定义都是不知道也不关心的,
- 协议转换(WebService,Http,JMS...)
- 数据转换(传输协议特定格式与ESB统一消息模型的转换,各服务间数据模型的映射转换)
- 消息路由(静态端点配置,基于内容的过滤与路由)
- MEP转换(同步/异步)
- 组合服务(ESB服务编排、可选的BPEL流程引擎)
ESB既支持通过统一的配置机制完成以上功能,也支持开发者在其上编写富含业务逻辑的数据转换、消息路由甚至业务处理模块。
服务中介--
由ESB为服务的交互过程统一、批量、低廉的提供一系列的基础服务 。
- 服务治理 (服务注册中心)
- QOS (负载均衡,可靠性传输,异常处理,流量控制)
- 统一安全管理 (ESB的基本安全控制,含业务逻辑的安全控制)
- 服务日志与监控(服务调用及消息数据的日志清单,系统及服务的性能与状态监控)
- BAM业务活动监测(如发现某个服务的调用比昨天增加超过了一定的百分比,CEP复杂事件处理)
ESB实现
开源工具-Fuse ESB,Mule,JBoss ESB,WSO2,ServiceMix,Apache Camel,Spring Integration
商业工具-BEA AquaLogic,IBM(Message Broker,WebSphere ESB,DataPower),Progress Sonic ESB