企业应用集成与开源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-sa2.创建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:run2.启动cxfdemo-client,直连cxfdemo-server发布的服务以确认server和client均可正确正常工作: mvncompile exec:java3.build并deploy工程servicemixdemo-http-sa到ServiceMix4.修改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/mydemolibDemo的步骤为:
1.启动cxfdemo-server发布服务:mvnclean jetty:run2.启动cxfdemo-client,直连cxfdemo-server发布的服务以确认server和client均可正确正常工作: mvncompile exec:java3.build并deploy工程muledemo-bridge到mule4.修改cxfdemo-client的连接配制,让其连接到mule,重新启动cxfdemo-client,依然可以通过ESB正常访问到所需要的服务。小结•ESB是企业应用集成的核心部件,它的主要职责是连通各类使用不同协议通信的应用•ServiceMix是JBI规范的实现•Mule是目前最为成熟的开源ESB产品,背后有商业公司支持,功能强大,插件丰富•综合评价:Mule优于ServiceMix