EnjoyingSoft之Mule ESB基礎系列第一篇:初識Mule ESB
目錄
我們在做企業整合專案的時候,經常會用到很多開源中介軟體,比如企業服務匯流排,訊息中介軟體,服務框架等。在使用這些開源中介軟體的時候,我們也趟過了很多的坑,EnjoyingSoft,就是享受這些軟體,其中積累的經驗分享給大家,希望為開源事業做一份貢獻。這篇系列主要說的是企業服務匯流排Mule ESB。
Mule ESB在眾多開源的ESB中處於領先者的地位,MuleSoft公司也作為獨角獸,2017年在紐交所上市。我們作為MuleSoft的合作伙伴也有幸參與其中,在六年多的時間裡,我們使用Mule ESB企業版實施,或者在社群版基礎上擴充套件,使用Mule ESB社群版實施,幫助國內眾多的企業成功上線SOA專案。
使用Mule ESB的過程中,體會到其快速的開發效率,以及優秀的架構設計。同時也深感國內這塊資料非常稀少,所以計劃使用8篇文章來寫Mule ESB的基礎系列。
- 360.html" rel="nofollow,noindex" target="_blank">EnjoyingSoft之Mule ESB基礎系列第一篇:初識Mule ESB
- EnjoyingSoft之Mule ESB基礎系列第二篇:Mule ESB基本概念
- EnjoyingSoft之Mule ESB基礎系列第三篇:Mule message structure - Mule message結構
- EnjoyingSoft之Mule ESB基礎系列第四篇:Mule Expression Language - MEL表示式
- EnjoyingSoft之Mule ESB基礎系列第五篇:控制訊息的流向-資料路由
- EnjoyingSoft之Mule ESB基礎系列第六篇:Data Transform - 資料轉換
- EnjoyingSoft之Mule ESB基礎系列第七篇:SOAP Web Service的消費和建立
- EnjoyingSoft之Mule ESB基礎系列第八篇:使用API構建Rest Service
1. Mule ESB基本介紹
Mule ESB是世界上使用最廣泛的開源企業服務匯流排(ESB)產品,已擁有超過數百萬的下載量,以及來自世界各地數十萬個開發人員,很多世界五百強企業選擇Mule ESB作為企業整合平臺。通過Mule,企業可以在短時間內輕鬆地建立並整合應用服務,Mule ESB消除了系統整合的複雜度,使開發人員能夠在異構系統和服務之間,輕鬆地構建出高效能的整合應用。
和傳統的ESB不一樣,Mule ESB是一個輕量級的ESB,核心基於SEDA模型和Spring框架構建。基於Spring,意味有著非常靈活的擴充套件性。同時Mule ESB不僅僅是一個ESB,它也是流行的微服務體系中的一部分。這個系列我們著重介紹它的ESB功能,後續我們再著重介紹它的API管理等功能。
2. Mule ESB社群版和企業版
和很多開源軟體一樣,Mule ESB分成兩個版本,社群版和企業版。其中社群版是免費使用的。而企業版則需要付費訂閱使用,功能更強大。如果企業預算充足,則可以選擇企業版。或者使用Mule ESB社群版,在社群版基礎上做擴充套件,在有技術支援的情況下,同樣可以收到良好的效果。
關於社群版和企業版的主要區別,可以參照下表。如何選擇可以參考具體的業務場景和企業情況。Anyway,由於Mule ESB是開源的,我們在社群版上可以有很多的靈活擴充套件。
3. Mule ESB常用場景
我們來說一下Mule ESB的常見應用場景,可以更好的理解Mule ESB到底可以幫助我們解決什麼問題。
-
舊系統改造,開放系統的服務能力。舉個例子,我們有一個電商系統,需要呼叫SAP ERP的訂單介面來建立訂單。這個時候就需要將SAP的訂單服務暴露成我們流行的Rest Service介面,以方便電商系統呼叫。當然電商系統可以直接使用SAP的JCO包來呼叫SAP的BAPI Function,但顯然暴露一個通用的Rest Service更易於呼叫。使用Mule ESB實現如下:
-
系統整合。舉個例子,很多系統之間資料互動可能還是用FTP目錄。尤其是企業跟企業之間的資料互動,比如,A企業丟一個EDI 檔案到B企業的FTP目錄,然後B企業會從FTP目錄下載解析並放置到資料庫。這個場景用Mule ESB實現就很方便。
-
ETL。市面上有很多開源的ETL軟體,其實Mule ESB也有ETL的功能,通過Flow設定ETL的資料轉換和資料流向。下圖就演示了Mule的ETL和資料分發功能。
4. 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 64Bit , Mac 64Bit )。請根據你的客戶端的作業系統選擇對應的版本。我們只要在Windows或者Mac電腦上安裝好JDK8之後,解壓縮Zip包,雙擊即可開啟。開啟的介面如下:
由於Anypoint Studio預設只內嵌了Mule ESB企業版執行時,如果你想使用社群版的話,我們還需要安裝Mule ESB社群版執行時。為什麼客戶端也需要Runtime?這很容易理解,我們開發除錯都需要使用Runtime,難道你編寫程式碼後,不執行和除錯嗎-:)
安裝社群版執行時,可以使用下列步驟。
-
點選Help/Install New Software...選單
-
在Work with下拉框中選擇Mule Runtimes for Anypoint Studio
-
選中Mule ESB Server Runtime 3.9.0 CE,CE就是Community Edition,社群版的意思。然後點選Next一直到完成。
服務端安裝
服務端不區分作業系統,你可以從 這裡 下載到3.9.0版本的社群版Runtime。Mule ESB Runtime可以執行在Windows,Linux,Mac等作業系統上,我們推薦在生產環境使用Linux部署Mule ESB Runtime。服務端的安裝也很簡單,只要在伺服器上安裝好JDK8之後,解壓縮Runtime即可。
5. 第一個Mule ESB應用- Hello world
我們學習新的語言和框架都會使用經典的Hello world程式,這裡也不例外。我們要做的就是,使用Mule ESB建立一個HTTP服務,當用戶訪問HTTP埠後,返回Hello world。開發步驟很簡單:
-
點選File/New/Mule Project,新建Mule工程,這裡選擇使用CE版,也就是社群版,然後一步步Next直到完成。
-
拖入HTTP元件到空白的畫布中。
-
選擇畫布上的Http元件,在屬性頁面新增Connector Configuration,在彈出視窗設定偵聽的埠,注意不要和你本機的埠衝突。
-
拖入Set Payload元件,在屬性頁面,設定Value值,Hello word。
-
在工程專案上右擊彈出選單,Run As/Mule Application。稍等片刻,Console視窗會出現"Mule is up and kicking",表示Mule已經開始工作了!
-
使用Postman訪問HTTP埠,返回Hello world,Mule。恭喜你,你是一個Mule開發者了 -:)
使用Mule ESB上手非常簡單,我們後續會介紹更多的元件,比如你需要從資料庫獲取資料,那麼就使用Database,還有更多元件等待挖掘。
6. 部署Mule ESB應用
我們已經在客戶端開發完成了Hello world,也順利跑起來了。但是如何部署到服務端呢。和常見的Java開發一樣,我們也需要打包應用。這裡我們用的是普通工程,我們通過一個Export操作,即可匯出Mule App(當然Mule App也支援Maven工程,可以通過Maven打包)。在工程專案上右擊彈出選單,Export...,然後在對話方塊中選擇Anypoint Studio Project to Mule Deployable Archive。注意這裡不要選中Attach project sources。
將匯出的Zip包放入到Mule Runtime的apps目錄下,然後啟動Mule Runtime。如果是Linux或者mac,那麼在Mule Runtime的bin目錄下執行 ./mule
啟動命令。如果是Windows,雙擊執行bin目錄mule.bat即可啟動。
然後使用Postman訪問伺服器,你會得到和Studio一樣的效果。
本文同步發文於 EnjoyingSoft之Mule ESB基礎系列第一篇:初識Mule ESB
訪問 EnjoyingSoft 網站,獲取更多 Mule ESB社群版實施 幫助。
歡迎轉載,但必須保留原文和此段宣告,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利。