ESB是什么
- ESB综述1:定义ESB 、ESB综述2:ESB使用案例 (InfoQ)
- 探索企业服务总线 part1(IBM DW) ,part2
- Defining the ESB (DDJ)
- 《Enterprise Service Bus》 ,O'Reilly 2004
ESB就是一个服务的中介,形成服务使用者->ESB服务Proxy->服务提供者的生物链,中介的作用在不同应用中各有不同:
- 解耦中介:客户对实际服务提供者的身份、物理位置、传输协议和接口定义都是不知道也不关心的,交互集成代码提取到了业务逻辑之外,由ESB平台进行中央的宣告式定义。 ESB平台实现协议转换(WebService,Http,JMS...),消息转换(转换、充实、过滤),消息路由(同步/异步、发布/订阅、基于内容路由、分支与聚合...)。
- 服务中介:ESB平台作为中介提供服务交互中的基础服务。 ESB平台实现SLA(可靠性保证,负载均衡,流量控制,缓存,事务控制,加密传输),服务管理监控(异常处理,服务调用及消息数据记录,系统及服务的状态监控,ESB配置管理),统一安全管理(这个有点理想主义)。
- 服务编排:多个服务进行编排形成新的服务。 ESB支持一个直观的形式定义新组合服务的流程(工作流、BPEL 或 代码级编排)。
缺点就是天然的额外中转性能消耗,中央ESB的性能瓶颈和高可用性问题。
ESB实现
开源ESB实现
- Mule ,很多时候更像一个Service Container,OpenSource界暂时第一。
- WSO2 ,Axis2 背后公司的作品。
- ServiceMix ,关注于JBI的实现。
- JBoss ESB , Sun OpenESB 没有关注。
开源轻量级ESB
- Apache Camel ,一个嵌入式的Router类库。
- Spring Intergration ,相当清爽轻量的Spring Style的Router。
商业ESB
- BEA AquaLogic ,作为ESB概 念比Mule纯粹,同时使用JMS作为message flow的底层,在Weblogic上实现HA,群集和监控管理界面。但路由编排再次走了图形编程+XML Context(XQuery)的老路,相当鸡肋。
- IBM(Message Broker, Websphere ESB,DataPower),