過(guò) 怡
(蘇州市職業(yè)大學(xué) 計(jì)算機(jī)工程學(xué)院, 江蘇 蘇州215104)
ESB(企業(yè)服務(wù)總線(xiàn)的簡(jiǎn)稱(chēng)),作為一種低耦合的服務(wù)和應(yīng)用之間的集成方式,用于集成應(yīng)用程序和服務(wù)的靈活連接基礎(chǔ)設(shè)施,是當(dāng)今先進(jìn)的企業(yè)應(yīng)用整合方案。 ESB 作為SOA(面向服務(wù))架構(gòu)的信息傳輸龍骨,通過(guò)減少應(yīng)用程序和服務(wù)之間的接口數(shù)量、大小和復(fù)雜性來(lái)簡(jiǎn)化IT 架構(gòu),降低運(yùn)作成本,實(shí)現(xiàn)系統(tǒng)之間、部門(mén)之間、不同廠(chǎng)商之間的應(yīng)用集成,從而降低了企業(yè)應(yīng)用集成的難度和成本,提升了業(yè)務(wù)靈活性和市場(chǎng)響應(yīng)速度,最終提升了企業(yè)的競(jìng)爭(zhēng)優(yōu)勢(shì)[1-2]。
近年來(lái),ESB 技術(shù)在系統(tǒng)架構(gòu)設(shè)計(jì)中得到了廣泛的應(yīng)用,尤其在新系統(tǒng)的實(shí)施過(guò)程中,通過(guò)自上而下的系統(tǒng)規(guī)劃使得后臺(tái)服務(wù)開(kāi)發(fā)標(biāo)準(zhǔn)化、服務(wù)監(jiān)控規(guī)范化、服務(wù)配置管理統(tǒng)一,保證了數(shù)據(jù)的一致性、實(shí)時(shí)性和安全性,降低了IT 整體管理成本,內(nèi)部數(shù)據(jù)得到了整合,提高了系統(tǒng)的靈活度和快速響應(yīng)能力[3]。
然而,對(duì)于企業(yè)而言,隨著業(yè)務(wù)發(fā)展和規(guī)模擴(kuò)大,原有的信息系統(tǒng)建設(shè)存在著明顯的局限性,保障業(yè)務(wù)運(yùn)行的大量存量信息化系統(tǒng),沒(méi)有ESB 架構(gòu),有著獨(dú)立的數(shù)據(jù)庫(kù)平臺(tái)、以及海量的業(yè)務(wù)數(shù)據(jù),存在著信息孤島,無(wú)法實(shí)現(xiàn)信息共享和資源整合[4]。
因此,對(duì)企業(yè)信息化系統(tǒng)通過(guò)ESB 架構(gòu)進(jìn)行系統(tǒng)改造,實(shí)現(xiàn)系統(tǒng)解耦,完成能力封裝,降低維護(hù)成本,提升服務(wù)擴(kuò)展能力。
以某上市企業(yè)的ESB 項(xiàng)目為例,在實(shí)施之前,企業(yè)的信息化系統(tǒng)架構(gòu)中存在大量點(diǎn)對(duì)點(diǎn)的系統(tǒng)接口和數(shù)據(jù)流,如圖1 所示。
圖1 ESB 項(xiàng)目前的信息化系統(tǒng)架構(gòu)Fig. 1 IT System Architecture Before ESB Project
實(shí)施策略:導(dǎo)入合適的ESB 產(chǎn)品,在ESB 產(chǎn)品的基礎(chǔ)上,搭建企業(yè)ESB 平臺(tái),將主數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)逐步分批開(kāi)發(fā)接口,并注冊(cè)發(fā)布在該平臺(tái),按優(yōu)先級(jí)逐步改造存量信息化系統(tǒng)的數(shù)據(jù)調(diào)用方式,逐步實(shí)現(xiàn)對(duì)公司數(shù)據(jù)流和接口的整體管理監(jiān)控,減少系統(tǒng)之間的耦合,如圖2 所示。
圖2 ESB 項(xiàng)目后的信息化系統(tǒng)架構(gòu)Fig. 2 IT System Architecture After ESB Project
企業(yè)在ESB 項(xiàng)目選型過(guò)程中,試用過(guò)很多產(chǎn)品,最終選擇IIB(IBM Integrated Bus)搭建企業(yè)服務(wù)總線(xiàn)平臺(tái)。 IIB 有大量的國(guó)內(nèi)外企業(yè)客戶(hù),具有完善的功能,包括支持多種協(xié)議(CICS, IMS, CORBA,SAP, JDEdwards...)、傳輸(MQ, HTTP(S), SOAP,REST, FTP, TCP/IP...)和數(shù)據(jù)格式(Binary, XML,csv, JSON, IDOCs, 自定義),各種消息處理的能力(路由、過(guò)濾、轉(zhuǎn)換、監(jiān)測(cè)、發(fā)布、分解、序列、關(guān)聯(lián)、檢測(cè))強(qiáng)大,圖形化的編程方式(通過(guò)圖形數(shù)據(jù)流描述應(yīng)用和服務(wù)之間的連接,通過(guò)圖形映射,Java,XSL &WTX 來(lái)定義邏輯),垂直和水平的擴(kuò)展能力。 支持集成現(xiàn)有系統(tǒng)而無(wú)需考慮其底層采用何種技術(shù)。
企業(yè)根據(jù)業(yè)務(wù)系統(tǒng)的實(shí)際情況,結(jié)合信息系統(tǒng)規(guī)劃和行業(yè)最佳實(shí)踐,設(shè)計(jì)了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ù)庫(kù)層面的數(shù)據(jù)共享需求,無(wú)數(shù)據(jù)共享需求則不屬于ESB 服務(wù)集成的服務(wù)接口。
表1 ESB 系統(tǒng)軟硬件清單Tab. 1 Hardware & Software List of ESB System
(2)ESB 集成的接入方式。 平臺(tái)允許接入的協(xié)議包括:HTTP API/Restful、WebService、JMS/MQ、FTP、RFC、IDOC。 如果有特殊需求可以接入郵件服務(wù)器、LDAP、文件等服務(wù),優(yōu)先使用HTTP API 傳輸協(xié)議方式。
(3)滿(mǎn)足企業(yè)內(nèi)和企業(yè)間的數(shù)據(jù)傳輸要求。ESB 被設(shè)計(jì)成可以滿(mǎn)足企業(yè)內(nèi)各個(gè)系統(tǒng)間數(shù)據(jù)交換的服務(wù)總線(xiàn),也可以滿(mǎn)足上下游企業(yè)間系統(tǒng)數(shù)據(jù)交換的服務(wù)網(wǎng)關(guān)。
(4)服務(wù)虛擬化。 ESB 服務(wù)請(qǐng)求方不需要關(guān)心服務(wù)提供方在哪,當(dāng)前的狀態(tài)是什么,只需要提交自己的數(shù)據(jù)到ESB 總線(xiàn),ESB 負(fù)責(zé)將消息送達(dá)到指定的服務(wù)提供方,并在服務(wù)處理完畢后將結(jié)果返回到服務(wù)請(qǐng)求方。 實(shí)現(xiàn)了后端SOA 生態(tài)環(huán)境的服務(wù)虛擬化,構(gòu)建了一個(gè)基于SOA 服務(wù)的私有云。
(5)數(shù)據(jù)傳輸?shù)目煽啃浴?保證不同系統(tǒng)間數(shù)據(jù)傳輸?shù)目煽啃允瞧髽I(yè)級(jí)數(shù)據(jù)集成需要實(shí)現(xiàn)的首要目標(biāo)。 在ESB 核心交換層,使用MQ/JMS 和基于HTTP 的Web Service 和Restful 協(xié)議,使用雙節(jié)點(diǎn)部署部署IIB 核心節(jié)點(diǎn),運(yùn)行在ESB 內(nèi)的消息流可以被邏輯隔離,最大限度避免由于ESB 單點(diǎn)故障導(dǎo)致的系統(tǒng)數(shù)據(jù)交換問(wèn)題。
(6)跨平臺(tái)兼容性。 使用XML/JSON 消息格式,滿(mǎn)足跨系統(tǒng)跨平臺(tái)的兼容性要求,采用UTF-8編碼的XML/JSON 格式作為消息封裝標(biāo)準(zhǔn)。 服務(wù)調(diào)用方和接收方根據(jù)業(yè)務(wù)需求約定XML/JSON 內(nèi)封裝的數(shù)據(jù)內(nèi)容。
(7)消息的大小。 ESB 被設(shè)計(jì)成為快速吞吐數(shù)據(jù)的數(shù)據(jù)總線(xiàn),在可能的情況下,應(yīng)該將消息拆解為單個(gè)消息比較小的大批量數(shù)據(jù)。 考慮到性能因素。規(guī)定使用Web Service/HTTP API 接入方式的報(bào)文大小控制在4 MB 以?xún)?nèi);MQ/JMS 接入方式的報(bào)文大小控制在10 MB 以?xún)?nèi);如果需要傳送較大的報(bào)文,需將報(bào)文拆分,使用多次服務(wù)交互和發(fā)送;FTP 和MQ 分段報(bào)文大小控制在16 M 以?xún)?nèi)。
(1)接入系統(tǒng)規(guī)范。 ESB 平臺(tái)定義了各個(gè)請(qǐng)求方的系統(tǒng)代碼,編碼ID 為定長(zhǎng)3 字節(jié),內(nèi)部系統(tǒng)從0 開(kāi)始編碼,外部系統(tǒng)從9 開(kāi)始編碼。 新系統(tǒng)接入前,需要向ESB 系統(tǒng)管理員申請(qǐng)系統(tǒng)編碼。 編碼樣例如表2 所示。
表2 ESB 接入系統(tǒng)編碼樣例Tab. 2 NamingCode Sample of Connected System
(2)服務(wù)編碼。 通過(guò)對(duì)服務(wù)的統(tǒng)一梳理,將每個(gè)服務(wù)統(tǒng)一分配一個(gè)唯一編號(hào),另外每個(gè)服務(wù)對(duì)應(yīng)的serviceName 也是唯一的,兩者都可以用來(lái)標(biāo)示一個(gè)唯一的服務(wù),例如serviceName 用在報(bào)文頭中標(biāo)示需要訪(fǎng)問(wèn)的服務(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ù)字或等值字符串,由各個(gè)接入系統(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 代表資源請(qǐng)求失敗或安全相關(guān)異常;5XX 代表服務(wù)器處理異常。
ESB 平臺(tái)響應(yīng)碼樣例如表4 所示,可以進(jìn)行擴(kuò)展。
表4 ESB 平臺(tái)響應(yīng)編碼樣例Tab. 4 Response Code Sample of ESB System
本文建立了ESB 平臺(tái),針對(duì)企業(yè)特性,從系統(tǒng)耦合程度最高的訂單系統(tǒng)開(kāi)始ESB 接口開(kāi)發(fā),完成了主數(shù)據(jù)和訂單業(yè)務(wù)的ESB 接口開(kāi)發(fā),包括客戶(hù)主數(shù)據(jù),產(chǎn)品主數(shù)據(jù),價(jià)格主數(shù)據(jù),庫(kù)存信息,客戶(hù)信貸,銷(xiāo)售訂單,交貨單,訂單規(guī)則類(lèi)信息等31 個(gè)ESB接口的開(kāi)發(fā)和應(yīng)用,形成了以ERP 系統(tǒng)為核心,將訂單系統(tǒng)的主數(shù)據(jù)和和核心業(yè)務(wù)數(shù)據(jù)發(fā)布到ESB平臺(tái),訂單系統(tǒng)訂閱ESB 服務(wù)的低耦合數(shù)據(jù)交互模式,為后續(xù)ESB 平臺(tái)的持續(xù)建設(shè)建立了規(guī)范,有效地改進(jìn)了信息化系統(tǒng)架構(gòu),為系統(tǒng)能力提升打下了良好的基礎(chǔ)。