ESB近期研究总结

sun3ly 8年前

来自: http://blog.sina.com.cn/s/blog_493a84550102w4ig.html

近期的重点还是进一步对开源ESB和相关组件产品进行研究,简单总结如下:


对于开源Talend ESB前面已经有文章介绍到是一款相当优秀的ESB集成产品套件,由于Talend本身是以做ETL起家的,因此产品对数据库和大数据的集成能力相当强。对于Talend ESB的测试,近期重点是做了在Mediation模式下对Camel流程设计的测试,整体功能基本能满足使用要求,但是相当对于直接使用Camel本身存在一定程度的封闭性。

由于使用了routines.system.api这个talend自己的包,因此talend导出的kar包部署到servicemix是无法运行的。尝试单独建立了一个elicpse工程导入相关的代码和routines.system.api包相关的java源代码文件。虽然能够maven编译通过,但是通过bundle:install安装到servicemix仍然无法运行。

对于camel组件的可视化设计,在talend里面没有使用类似blueprint和spring xml这种配置文件,而是talend自己的一种配置文件格式,这个可以在{routinename}.item中查看到具体的配置内容。即talend整个思路是首先将图形化配置内容存到该配置文件,然后再通过配置文件读取动态的生成java代码文件。在部署的时候将java代码进行动态的打包编译并部署运行。

如果要借用talend的camel设计器,则可以自己来实现对.item文件的读取,然后生成相应的java代码文件,即通过自己实现的代码来实现talend设计器和camel引擎之间的中转。以解决当前camel的可视化设计问题。

Talend ESB本身的Server端可以看到仍然集成了karaf,camel,cxf,ActiveMQ等,可以看到该Server端实际是包含了开源ServiceMix的所有内容的,只是更加强大。


对于Camel可以说是一款实现企业EIP集成各种场景的基于规则的优秀集成中间件产品,可以看到对于Servicemix和Fuse都是基于Camel来实现,同时Talend本身也包含了Camel组件设计和所有功能的融入。而对于Mule则是较为独立的一套设计方法和引擎。

对于Camel近期主要做了一些例子的验证和测试,主要还是围绕CXF的Web Service和DB集成能力进行。对于CXF本身的集成要实现一个Proxy代理服务相对来说还是相对简单的,最简单的代理完全可以通过blueprint的xml配置文件就可以实现,而对于负责的我们则可以自己实现相应的bean,在java代码里面进行规则处理和逻辑转换。当然对于简单的转换也完全可以通过xpath语句进行即可。

对于DB数据库的集成,对jdbc数据集成模式进行了测试。但是对于CXF+DB的集成还没有展开相应的测试。对于DB在Camel里面跑通的例子,当我们部署到servicemix里面的时候运行仍然存在问题,当前还没有找到具体的原因。及时jar包所依赖的所有包都通过bundle:install安装完毕,但是在服务jar包部署完成并启动的时候仍然会有一些报错问题无法解决,估计还是配置文件或jar包本身版本的原因。这个也导致一个问题,即如何将在camel里面调测通过的内容快速的部署到karaf的osgi环境里面,当前没有找到具体的快速方法。

基于Camel来实现和定制ESB服务总线是一个可行的线路,毕竟Camel在底层已经有了完善的支撑。重点主要还是缺两方面的能力,一个是可视化的camel组件设计和编排,一个是管控和治理平台。如果按这个思路进行做,可以先完善Camel引擎,包括日志,安全,流控等方面的内容,同时增加管控平台。其次再来考虑设计器的研发,前期可替代方案即是先使用talend或fuse的设计器,对于设计完成的内容再转到camel里面去运行。

Jboss Fuse ESB

在本周完成对Fuse集成开发环境的初步安装。前面已经谈到过在Redhat收购了jboss后,对于Jboss ESB和原有的Fuse Servicework,包括Switchyard等产品都做了较大幅度的改变。所有内容都全部迁移到了Jboss fuse里面。对于Fuse的安装首先要安装Jboss Developer Editon,然后再安装相应的Fuse插件即可。

对于Fuse集成开发环境上对Camel的设计,可以直接映射到具体的blueprint或spring xml文件上。即该设计器是完全遵循Camel设计和配置文件标准的。那么如果希望找寻camel设计器的替代方案采用Fuse集成开发环境是一个不错的选择。

经过对Fuse的简单使用,可以看到Fuse设计器对Camel组件本身的动态配置和获取等能力相对还是比较弱,很多内容仍然还是需要手工填写和完善。举个简单的例子来说,当我们对一个CXF组件配置为获取远程的WSDL地址时候,在Talend里面是可以动态完成对SericeName,Portname等参数信息的填写,但是在Fuse里面这些信息仍然需要我们手工填写。

对于Fuse当前红帽更多推的是企业版本,也可以将Fuse看做在ServiceMix上增加了设计器和管控治理能力的一个完整企业ESB服务总线产品。个人整体感觉而言虽然Fuse完整的集成了Camel,但是在服务和接口的集成和实现中,易用性仍然不如Talend ESB产品。