過 怡
(蘇州市職業(yè)大學(xué) 計算機工程學(xué)院, 江蘇 蘇州215104)
ESB(企業(yè)服務(wù)總線的簡稱),作為一種低耦合的服務(wù)和應(yīng)用之間的集成方式,用于集成應(yīng)用程序和服務(wù)的靈活連接基礎(chǔ)設(shè)施,是當(dāng)今先進的企業(yè)應(yīng)用整合方案。 ESB 作為SOA(面向服務(wù))架構(gòu)的信息傳輸龍骨,通過減少應(yīng)用程序和服務(wù)之間的接口數(shù)量、大小和復(fù)雜性來簡化IT 架構(gòu),降低運作成本,實現(xiàn)系統(tǒng)之間、部門之間、不同廠商之間的應(yīng)用集成,從而降低了企業(yè)應(yīng)用集成的難度和成本,提升了業(yè)務(wù)靈活性和市場響應(yīng)速度,最終提升了企業(yè)的競爭優(yōu)勢[1-2]。
近年來,ESB 技術(shù)在系統(tǒng)架構(gòu)設(shè)計中得到了廣泛的應(yīng)用,尤其在新系統(tǒng)的實施過程中,通過自上而下的系統(tǒng)規(guī)劃使得后臺服務(wù)開發(fā)標準化、服務(wù)監(jiān)控規(guī)范化、服務(wù)配置管理統(tǒng)一,保證了數(shù)據(jù)的一致性、實時性和安全性,降低了IT 整體管理成本,內(nèi)部數(shù)據(jù)得到了整合,提高了系統(tǒng)的靈活度和快速響應(yīng)能力[3]。
然而,對于企業(yè)而言,隨著業(yè)務(wù)發(fā)展和規(guī)模擴大,原有的信息系統(tǒng)建設(shè)存在著明顯的局限性,保障業(yè)務(wù)運行的大量存量信息化系統(tǒng),沒有ESB 架構(gòu),有著獨立的數(shù)據(jù)庫平臺、以及海量的業(yè)務(wù)數(shù)據(jù),存在著信息孤島,無法實現(xiàn)信息共享和資源整合[4]。
因此,對企業(yè)信息化系統(tǒng)通過ESB 架構(gòu)進行系統(tǒng)改造,實現(xiàn)系統(tǒng)解耦,完成能力封裝,降低維護成本,提升服務(wù)擴展能力。
以某上市企業(yè)的ESB 項目為例,在實施之前,企業(yè)的信息化系統(tǒng)架構(gòu)中存在大量點對點的系統(tǒng)接口和數(shù)據(jù)流,如圖1 所示。

圖1 ESB 項目前的信息化系統(tǒng)架構(gòu)Fig. 1 IT System Architecture Before ESB Project
實施策略:導(dǎo)入合適的ESB 產(chǎn)品,在ESB 產(chǎn)品的基礎(chǔ)上,搭建企業(yè)ESB 平臺,將主數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)逐步分批開發(fā)接口,并注冊發(fā)布在該平臺,按優(yōu)先級逐步改造存量信息化系統(tǒng)的數(shù)據(jù)調(diào)用方式,逐步實現(xiàn)對公司數(shù)據(jù)流和接口的整體管理監(jiān)控,減少系統(tǒng)之間的耦合,如圖2 所示。

圖2 ESB 項目后的信息化系統(tǒng)架構(gòu)Fig. 2 IT System Architecture After ESB Project
企業(yè)在ESB 項目選型過程中,試用過很多產(chǎn)品,最終選擇IIB(IBM Integrated Bus)搭建企業(yè)服務(wù)總線平臺。 IIB 有大量的國內(nèi)外企業(yè)客戶,具有完善的功能,包括支持多種協(xié)議(CICS, IMS, CORBA,SAP, JDEdwards...)、傳輸(MQ, HTTP(S), SOAP,REST, FTP, TCP/IP...)和數(shù)據(jù)格式(Binary, XML,csv, JSON, IDOCs, 自定義),各種消息處理的能力(路由、過濾、轉(zhuǎn)換、監(jiān)測、發(fā)布、分解、序列、關(guān)聯(lián)、檢測)強大,圖形化的編程方式(通過圖形數(shù)據(jù)流描述應(yīng)用和服務(wù)之間的連接,通過圖形映射,Java,XSL &WTX 來定義邏輯),垂直和水平的擴展能力。 支持集成現(xiàn)有系統(tǒng)而無需考慮其底層采用何種技術(shù)。
企業(yè)根據(jù)業(yè)務(wù)系統(tǒng)的實際情況,結(jié)合信息系統(tǒng)規(guī)劃和行業(yè)最佳實踐,設(shè)計了ESB 系統(tǒng)架構(gòu),如圖3所示。

圖3 ESB 系統(tǒng)架構(gòu)圖Fig. 3 ESB System Architecture
其中,系統(tǒng)架構(gòu)的軟硬件清單如表1 所示。
(1)ESB 系統(tǒng)應(yīng)用集成的范圍。 ESB 系統(tǒng)主要用于企業(yè)不同業(yè)務(wù)領(lǐng)域的業(yè)務(wù)系統(tǒng)之間的應(yīng)用集成,數(shù)據(jù)庫層面的數(shù)據(jù)共享需求,無數(shù)據(jù)共享需求則不屬于ESB 服務(wù)集成的服務(wù)接口。

表1 ESB 系統(tǒng)軟硬件清單Tab. 1 Hardware & Software List of ESB System
(2)ESB 集成的接入方式。 平臺允許接入的協(xié)議包括:HTTP API/Restful、WebService、JMS/MQ、FTP、RFC、IDOC。 如果有特殊需求可以接入郵件服務(wù)器、LDAP、文件等服務(wù),優(yōu)先使用HTTP API 傳輸協(xié)議方式。
(3)滿足企業(yè)內(nèi)和企業(yè)間的數(shù)據(jù)傳輸要求。ESB 被設(shè)計成可以滿足企業(yè)內(nèi)各個系統(tǒng)間數(shù)據(jù)交換的服務(wù)總線,也可以滿足上下游企業(yè)間系統(tǒng)數(shù)據(jù)交換的服務(wù)網(wǎng)關(guān)。
(4)服務(wù)虛擬化。 ESB 服務(wù)請求方不需要關(guān)心服務(wù)提供方在哪,當(dāng)前的狀態(tài)是什么,只需要提交自己的數(shù)據(jù)到ESB 總線,ESB 負責(zé)將消息送達到指定的服務(wù)提供方,并在服務(wù)處理完畢后將結(jié)果返回到服務(wù)請求方。 實現(xiàn)了后端SOA 生態(tài)環(huán)境的服務(wù)虛擬化,構(gòu)建了一個基于SOA 服務(wù)的私有云。
(5)數(shù)據(jù)傳輸?shù)目煽啃浴?保證不同系統(tǒng)間數(shù)據(jù)傳輸?shù)目煽啃允瞧髽I(yè)級數(shù)據(jù)集成需要實現(xiàn)的首要目標。 在ESB 核心交換層,使用MQ/JMS 和基于HTTP 的Web Service 和Restful 協(xié)議,使用雙節(jié)點部署部署IIB 核心節(jié)點,運行在ESB 內(nèi)的消息流可以被邏輯隔離,最大限度避免由于ESB 單點故障導(dǎo)致的系統(tǒng)數(shù)據(jù)交換問題。
(6)跨平臺兼容性。 使用XML/JSON 消息格式,滿足跨系統(tǒng)跨平臺的兼容性要求,采用UTF-8編碼的XML/JSON 格式作為消息封裝標準。 服務(wù)調(diào)用方和接收方根據(jù)業(yè)務(wù)需求約定XML/JSON 內(nèi)封裝的數(shù)據(jù)內(nèi)容。
(7)消息的大小。 ESB 被設(shè)計成為快速吞吐數(shù)據(jù)的數(shù)據(jù)總線,在可能的情況下,應(yīng)該將消息拆解為單個消息比較小的大批量數(shù)據(jù)。 考慮到性能因素。規(guī)定使用Web Service/HTTP API 接入方式的報文大小控制在4 MB 以內(nèi);MQ/JMS 接入方式的報文大小控制在10 MB 以內(nèi);如果需要傳送較大的報文,需將報文拆分,使用多次服務(wù)交互和發(fā)送;FTP 和MQ 分段報文大小控制在16 M 以內(nèi)。
(1)接入系統(tǒng)規(guī)范。 ESB 平臺定義了各個請求方的系統(tǒng)代碼,編碼ID 為定長3 字節(jié),內(nèi)部系統(tǒng)從0 開始編碼,外部系統(tǒng)從9 開始編碼。 新系統(tǒng)接入前,需要向ESB 系統(tǒng)管理員申請系統(tǒng)編碼。 編碼樣例如表2 所示。

表2 ESB 接入系統(tǒng)編碼樣例Tab. 2 NamingCode Sample of Connected System
(2)服務(wù)編碼。 通過對服務(wù)的統(tǒng)一梳理,將每個服務(wù)統(tǒng)一分配一個唯一編號,另外每個服務(wù)對應(yīng)的serviceName 也是唯一的,兩者都可以用來標示一個唯一的服務(wù),例如serviceName 用在報文頭中標示需要訪問的服務(wù)。 服務(wù)編碼示例如表3 所示。

表3 ESB 系統(tǒng)服務(wù)編碼樣例Tab. 3 NamingCode Sample of ESB System Service
(3)響應(yīng)碼編碼。 響應(yīng)代碼用于消息響應(yīng)XML/JSON 數(shù)據(jù)的EsbCode 字段。 響應(yīng)代碼遵循編碼格式為6 位等值數(shù)字或等值字符串,由各個接入系統(tǒng)自行定義內(nèi)部響應(yīng)碼編碼規(guī)則:SSS NNN。 其中:
SSS:系統(tǒng)編碼,具體參考表2。
NNN:各系統(tǒng)內(nèi)部響應(yīng)碼,000~999;000 表示操作成功。 一般而言,0XX 代表操作成功;4XX 代表資源請求失敗或安全相關(guān)異常;5XX 代表服務(wù)器處理異常。
ESB 平臺響應(yīng)碼樣例如表4 所示,可以進行擴展。

表4 ESB 平臺響應(yīng)編碼樣例Tab. 4 Response Code Sample of ESB System
本文建立了ESB 平臺,針對企業(yè)特性,從系統(tǒng)耦合程度最高的訂單系統(tǒng)開始ESB 接口開發(fā),完成了主數(shù)據(jù)和訂單業(yè)務(wù)的ESB 接口開發(fā),包括客戶主數(shù)據(jù),產(chǎn)品主數(shù)據(jù),價格主數(shù)據(jù),庫存信息,客戶信貸,銷售訂單,交貨單,訂單規(guī)則類信息等31 個ESB接口的開發(fā)和應(yīng)用,形成了以ERP 系統(tǒng)為核心,將訂單系統(tǒng)的主數(shù)據(jù)和和核心業(yè)務(wù)數(shù)據(jù)發(fā)布到ESB平臺,訂單系統(tǒng)訂閱ESB 服務(wù)的低耦合數(shù)據(jù)交互模式,為后續(xù)ESB 平臺的持續(xù)建設(shè)建立了規(guī)范,有效地改進了信息化系統(tǒng)架構(gòu),為系統(tǒng)能力提升打下了良好的基礎(chǔ)。