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),