今天依旧是公司让调研,嗯嗯,学无止境
还是上次的问题,由于公司用了IBM的IIB,价格比较昂贵,所以调研一个开源的ESB用于小项目来使用,既然是小项目,估计也就用不到高可用这种集群模式了,所以老板让我学习一下Mule ESB社区版,以下是Mule ESB的简单介绍:
Mule
ESB在众多开源的ESB中处于领先者的地位,MuleSoft公司也作为独角兽,2017年在纽交所上市。我们作为MuleSoft的合作伙伴也有幸参与其中,在六年多的时间里,我们使用Mule
ESB企业版实施,或者在社区版基础上扩展,使用Mule ESB社区版实施,帮助国内众多的企业成功上线SOA项目。和传统的ESB不一样,Mule
ESB是一个轻量级的ESB,内核基于SEDA模型和Spring框架构建。基于Spring,意味有着非常灵活的扩展性。同时Mule
ESB不仅仅是一个ESB,它也是流行的微服务体系中的一部分。和很多开源软件一样,Mule
ESB分成两个版本,社区版和企业版。其中社区版是免费使用的。而企业版则需要付费订阅使用,功能更强大。如果企业预算充足,则可以选择企业版。或者使用Mule
ESB社区版,在社区版基础上做扩展,在有技术支持的情况下,同样可以收到良好的效果。关于社区版和企业版的主要区别,可以参照下表。如何选择可以参考具体的业务场景和企业情况。Anyway,由于Mule
ESB是开源的,我们在社区版上可以有很多的灵活扩展。
Mule ESB常用场景
1.旧系统改造,开放系统的服务能力。举个例子,我们有一个电商系统,需要调用SAP ERP的订单接口来创建订单。这个时候就需要将SAP的订单服务暴露成我们流行的Rest
Service接口,以方便电商系统调用。当然电商系统可以直接使用SAP的JCO包来调用SAP的BAPI
Function,但显然暴露一个通用的Rest Service更易于调用。使用Mule ESB实现如下:
2.系统集成。举个例子,很多系统之间数据交互可能还是用FTP目录。尤其是企业跟企业之间的数据交互,比如,A企业丢一个EDI 文件到B企业的FTP目录,然后B企业会从FTP目录下载解析并放置到数据库。这个场景用Mule ESB实现就很方便。
3.ETL。市面上有很多开源的ETL软件,其实Mule ESB也有ETL的功能,通过Flow设定ETL的数据转换和数据流向。下图就演示了Mule的ETL和数据分发功能。
好吧这些涉及到很多专有名词,一一了解一下:
1.SAP是财富杂志2018评选全球500强的企业之一,总部位于德国沃尔多夫市。 [1] SAP ERP是SAP旗下ERP产品的统称
之前有幸在一家云计算公司实习过,所以对ERP以及CRM有所了解,其实大白话就是企业信息化管理用的软件。简单了解到这就可以了,重点在ESB上。
Mule ESB软件安装
用一个相对宽泛的标准来划分,Mule ESB软件可以分成两部分。
一部分是客户端,也就是基于Eclipse的Anypoint
Studio,客户端就是用来开发集成应用的,通常面向的用户就是我们的开发人员。由于是基于Eclipse环境,所以Java开发人员会很熟悉,同时Anypoint
Studio也可以集成Git,SVN,Maven,Junit,Jenkins等一系列生态工具。当然作为其他语言的开发人员也不用担心,Anypoint
Studio是一个可视化的拖拽的开发环境,大部分的工作只需要使用鼠标拖拽组件,配置属性即可。还要一部分是服务端,也就是Mule
Runtime,也可以称作Container,容器,注意不要跟Docker的概念混淆。这里的Container指的是Java
Container,你可以大概想象成Tomcat类似的东西。客户端开发的应用就部署运行在Mule Runtime中。
需要注意的是,Mule
Runtime是一个独立的Container,只依赖JDK,并不依赖其他第三方的容器。服务器中只需要安装JDK和Mule
Runtime,即可运行Mule应用。还有一种不太常见的做法,就是把Mule
App跑在第三方的容器里(比如Tomcat等),通过对容器的扩展来支持Mule App。不过我们不推荐这种做法,还是推荐使用独立的Mule
Runtime,也就是官方说的Standalone版本。
Anypoint Studio是基于Eclipse构建的,请根据你的客户端的操作系统选择对应的版本。我们只要在Windows或者Mac电脑上安装好JDK8之后,解压缩Zip包,双击即可打开。打开的界面如下:
安装的时候注意一下几点:
1.必须安装JDK,而且环境变量path中JAVA_HOME必须在第一位
2.最好安装在C盘的根目录下,workspace选默认,如果在版本在7.几以上可以选择自己创建好的workspace.
由于Anypoint Studio默认只内嵌了Mule ESB企业版运行时,如果你想使用社区版的话,我们还需要安装Mule ESB社区版运行时。为什么客户端也需要Runtime?这很容易理解,我们开发调试都需要使用Runtime,难道你编写代码后,不运行和调试吗-😃
安装社区版运行时,可以使用下列步骤。
Community
http://studio.mulesoft.org/r3/studio-runtimes
或者
http://studio.mulesoft.org/r4/studio-runtimes
…
http://studio.mulesoft.org/r6/studio-runtimes
目前只能到r6。
从中选择自己需要的版本下载。
CE:表示社区版,EE:表示企业版
注意:anypoint Studio的版本和runtimes的版本也存在兼容问题。
具体的兼容和最好适用版本请查询:
https://docs.mulesoft.com/release-notes/studio/anypoint-studio-7.1-with-4.1-runtime-update-site-4-release-notes
然后一路next,直到finish
linux上安装Mule Runtime,链接:https://www.mulesoft.com/lp/dl/mule-esb-enterprise
下载后文件名:mule-ee-distribution-standalone-4.2.2.zip
进入linux系统将其解压在/opt目录下并将解压后的目录名改为mule:
修改/etc/profile文件:
执行一下source /etc/profile
注意:安装之前必须先安装好jre(JDK),并配置好环境。
当然首先是Hello World!
打开
1.点击File/New/Mule Project,新建Mule工程,这里选择使用CE版,也就是社区版,然后一步步Next直到完成
新版的和以前版本的有很多不一样
光是http这个组件它就已经分开了四个部分