加载中…
个人资料
plstryagain
plstryagain
  • 博客等级:
  • 博客积分:0
  • 博客访问:5,589
  • 关注人气:9
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

浅谈如何利用Apache相关开源项目构建企业服务总线(ESB)(三)

(2012-04-06 09:40:15)
分类: 杂谈
    上一篇重点讲了构建ESB需要选择一个好的container(Apache Servicemix), 要有得力的协议栈来集成webservice相关的模块(Apache CXF), 这一篇重点谈谈大规模分布系统消息传输问题的解决和异构系统,遗留系统之间接口的适配和交互。

    还是从Servicemix谈起吧(这几天我微博@Freeman小屋上面也有提到JBI的消亡问题, 还有Servicemix的kernel 是什么, 这里一并总结一下)。Servicemix的kernel就是Apache Karaf 本来只是Servicemix下面的一个子项目, 最终却成长成为了另外一个Apache的顶级项目(TLP, top level project)。 Karaf并不是一个OSGi spec的实现(Felix和Equinox是), Karaf是基于OSGi spec实现之上并提供了例如hot deployment, provisioning(feature), shell console, remote access(ssh), Security(JAAS), cluster, management等等的一个方便扩展的, 便于管理的, 通用的OSGi container。 当时之所以把Karaf另立一个项目, 主要是考虑Karaf的通用性, 对于其他很多希望使用OSGi container的项目会有帮助, 例如Apache Geronimo也是构建在Karaf的基础之上的。
    JBI随着背后大厂家SUN被收购, JBI 2.0 spec也就不了了之了, 实际上也宣告着JBI的死亡。 JBI最大的作用就是定义了标准的接口来解决异构系统,遗留系统之间接口的适配和交互, 伴随着JBI的走下坡路, 另外一个Apache项目Apache Camel 却发展的如火如荼。 一句话介绍Camel, Camel是基于EIP(Enterprise Integration Patterns)的一个集成框架, 致力于解决异构系统,遗留系统之间接口的适配和交互, 换言之, Camel是ESB业务处理和交互的核心。 事实上, 之前Camel和Servicemix在功能和定位上面一直有重叠, 例如, 很多组件在Servicemix和Camel都存在,例如集成webservice有servicemix-cxf-bc/se 和camel-cxf, 他们的功能基本相同, 不同的一个是符合JBI规范, 一个源于EIP的思想。 这种重叠也给不少用户带来了困惑, 在Apache社区相关项目邮件列表里面经常有人会问什么时候应该使用JBI组件, 什么时候应该使用Camel组件? 现在的答案很简单, 使用Camel,除非你有遗留系统已经使用了JBI组件并且必须继续使用JBI。Camel社区的发展非常快, 组件开发的也很多,这里有一个列表, camel支持的组件,远远多于JBI component。
    总结一下, 在ESB中要使用Apache Camel 来完成异构系统,遗留系统之间接口的适配和交互。
   
    还剩最后一个要解决的问题, 大规模分布系统如何交互。 异构平台, 异构系统的互联互通互操作是分布式应用的基础, 先前有CORBA(说道CORBA为我服务了8年多的东家IONA喝彩,这里必须有掌声), 但是CORBA过于复杂, 太重了, 尽管国内很多系统(包括新开发的系统)现在仍然基于CORBA平台。
    我这里推荐的是JMS spec的实现, JMS是基于消息的java接口, 提供多点之间松散的, 异步的, 可靠的消息传输。Apache Activemq是使用最为广泛的JMS开源实现, 提供了跨语言, 跨协议, 功能强大, 性能极为可靠, 是分布式尤其是大规模分布式应用的最佳选择。 我相信国内的用户应该对Activemq不陌生, 大家都知道的就不多讲。

    总结, 上面我们提到了Apache Servicemix, Apache CXF, Apache Karaf,  Apache Camel, Apache Activemq几个项目之间的关系及其在构建ESB中各自的作用。
     之三就到这里吧。 之四我想谈谈构建ESB时应该有哪些角色的参与, 以及各个角色的作用。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有