又过一年了,更新一次自己的esb笔记,内容实在,枯燥无味,浓缩即精华....年度最大发现应该是fuse esb 4.0吧。
esb的类型
esb最终以两种截然不同的形态存在于实际项目中:
一种是纯粹的soa交互基础
中间件,是系统间松耦合地互操作的基础设施。
一种是esb风格的
应用,如电信的能力网关那样联合多个系统提供组合服务。此时它既有一个esb中间件作为其基础设施,同时也遵循着esb的编程模型。
两者间的界限并不明显,在渐变中esb对周边服务的业务逻辑会越来越了解,直接体现在esb中的业务逻辑也越来越多。
解耦中介
由esb充当解耦的中介,使得服务消费者对实际服务提供者的身份、物理位置、传输协议和接口定义都是不知道也不关心的,
- 协议转换(webservice,http,jms...)
- 数据转换(传输协议特定格式与esb统一消息模型的转换,各服务间数据模型的映射转换)
- 消息路由(静态端点配置,基于内容的过滤与路由)
- mep转换(同步/异步)
- 组合服务(esb服务编排、可选的bpel流程引擎)
esb既支持通过统一的配置机制完成以上功能,也支持开发者在其上编写富含业务逻辑的数据转换、消息路由甚至业务处理模块。
服务中介
由esb为服务的交互过程统一、批量、低廉的提供一系列的基础服务 。
- 服务治理 (服务注册中心)
- qos (负载均衡,可靠性传输,异常处理,流量控制)
- 统一安全管理 (esb的基本安全控制,含业务逻辑的安全控制)
- 服务日志与监控(服务调用及消息数据的日志清单,系统及服务的性能与状态监控)
- bam业务活动监测(如发现某个服务的调用比昨天增加超过了一定的百分比,cep复杂事件处理)
开源esb实现
纷纷扰扰后,只剩下有实力的四国:
- , 基于servicemix与camel,由iona公司(被progress收购)提供支持,servicemix 4.0 重点已从jbi移到osgi,而且iona同时也是activemq与cxf背后的公司,三者整合良好。
- ,最早声势最大的开源esb,由mulesource公司提供支持。缺点是transport质量较差,缺乏强力的as底层,缺少服务中介能力,服务编排方式不理想.
- , jboss提供支持,中规中矩没什么明显缺点的esb,部署于jbossas上,特色是可用jbossrules编写router,用jbpm实现流程引擎。
- ,基于apache synapse,由axis2 背后的公司提供支持,但自己对axis2一系向来不感冒。
商业esb
- ,作为服务中间件非常好,路由编排再次走了图形编程 xml context(xquery)的老路,在业务复杂时不容易玩,同时缺乏直接业务编程能力,只能调java静态方法或远程ejb2.1方法。
- ibm(message broker, websphere esb,datapower),未接触。
- progress sonic esb,最早的esb,未接触。