企业应用集成与开源ESB产品ServiceMix和Mule介绍
议程
•企业对应用集成的内在需求
•企业IT设施面临的问题
•企业应用集成的架构方案
•ESB的角色与职责
•ServiceMix简介
–ServiceMix架构
–ServiceMix组件概览
–ServiceMix实战
–Demo
•Mule简介
–Mule的工作机理
–Mule组件概览
–Mule实战
–Demo
企业对应用集成的内在需求
•多数企业成立初期,其应用大多是用来代替一些孤立的、重复性质的工作环节,并没有考虑到企业业务与数据的集成。
•当企业发展到一定阶段时,开始意识到应用集成的价值和必要性。企业的各部门之间以及企业与合作伙伴之间需要相互协调,密切合作,企业内部原有的孤立应用是无法满足这一要求的。这促使企业开始寻求应用集成的解决方案。
企业IT设施面临的问题
•多套孤立的系统
–削弱了部门间的协作
–影响资源的整合
•不一致的数据格式
企业应用集成的架构方案
•Point-to-Point solution
•Hub-and-Spoke solution
•Enterprise Message Bus Integration
•Enterprise Service Bus Integration
Point-to-Point 风格的架构图
ESB风格的架构图
ESB的角色与职责
•Providing connectivity(支持跨协议)
•Data transformation(包括数据格式的转换)
•(Intelligent) routing
•Dealing with security
•Dealing with reliability
•Service management
•Monitoring and logging
ServiceMix简介
ServiceMix是基于JBI (JSR 208) 规范构建的ESB产品,作为ASF的一员,它集成了包括ActiveMQ, Camel, CXF, ODE, Karaf在内的一系列ASF的优秀产品和工具。
ServiceMix的优势:完全遵循JBI规范;与ASF其他优秀产品和工具有很好的集成
ServiceMix的劣势:扩展组件不够丰富;文档更新不够及时和全面(个人感觉在产品成熟度上与mule有不小的差距)
ServiceMix架构
ServiceMix组件概览
ServiceMix的功能是以组件为单位提供,因此可以说组件的多少决定了ServiceMix功能的多少,以下是ServiceMix的组件列表:http://servicemix.apache.org/components-list.html
ServiceMix实战
•使用ServiceMix提供的Mavenarchetype工具快速创建ServiceMix工程
•ServiceMix工程的包结构:
•示例:
1.创建SA: mvnarchetype:create-DarchetypeArtifactId=servicemix-service-assembly -DarchetypeGroupId=org.apache.servicemix.tooling-DgroupId=net.sf-DartifactId=demo-sa
2.创建SU: mvnarchetype:create-DarchetypeGroupId=org.apache.servicemix.tooling-DarchetypeArtifactId=servicemix-http-provider-service-unit -DgroupId=net.sf-DartifactId=demo-su
Demo
本Demo用于展示ESB的一项基本功能:连通两个系统。源代码可从sourceforge上检出,SVN地址https://mydemolib.svn.sourceforge.net/svnroot/mydemolib
Demo的步骤为:
1.启动cxfdemo-server发布服务:mvnclean jetty:run
2.启动cxfdemo-client,直连cxfdemo-server发布的服务以确认server和client均可正确正常工作: mvncompile exec:java
3.build并deploy工程servicemixdemo-http-sa到ServiceMix
4.修改cxfdemo-client的连接配制,让其连接到ServiceMix,重新启动cxfdemo-client,依然可以通过ESB正常访问到所需要的服务。
Mule简介
Mule:目前开源社区最成熟的ESB产品,在连通性、数据传输、路由方面都非常强健。其成熟性表现在:有非常丰富的扩展组件,完备的文档,受到多数应用服务器的支持。需要特别指出的是:Mule提供了一系列Cloud Connectors,使得mule可以与AmasonEC2这样的云平台进行集成。
Mule的工作机理
Mule组件概览
和ServiceMix一样,Mule也是以组件的方式提供和扩展功能的,Mule 有两大类组件transport和module。transport是与具体传输协议相关的组件,module则是与协议无关,不会传送和接收数据的组件。
官方Transport组件:http://www.mulesoft.org/documentation/display/MULE3USER/Transports+Reference
官方Module组件:http://www.mulesoft.org/documentation/display/MULE3USER/Modules+Reference
社区提供的组件:
http://www.mulesoft.org/community-transports-modules
Mule实战
使用Mule提供的Mavenarchetype工具快速创建mule工程.
示例:
mvnmule-project-archetype:create-DartifactId=muledemo-DmuleVersion=3.1.2
注意:该archetype工具在未指定transport或module时,总是会引入默认的transport或module,可在生成后的mule-config.xml手动删除不需要的组件。
Demo
本Demo用于展示ESB的一项基本功能:连通两个系统。源代码可从sourceforge上检出,SVN地址https://mydemolib.svn.sourceforge.net/svnroot/mydemolib
Demo的步骤为:
1.启动cxfdemo-server发布服务:mvnclean jetty:run
2.启动cxfdemo-client,直连cxfdemo-server发布的服务以确认server和client均可正确正常工作: mvncompile exec:java
3.build并deploy工程muledemo-bridge到mule
4.修改cxfdemo-client的连接配制,让其连接到mule,重新启动cxfdemo-client,依然可以通过ESB正常访问到所需要的服务。
小结
•ESB是企业应用集成的核心部件,它的主要职责是连通各类使用不同协议通信的应用
•ServiceMix是JBI规范的实现
•Mule是目前最为成熟的开源ESB产品,背后有商业公司支持,功能强大,插件丰富
•综合评价:Mule优于ServiceMix