周宇
一、引言
企業(yè)服務(wù)總線(ESB)是采用SOA(面向服務(wù)架構(gòu))技術(shù),以“軟總線”的方式,提供服務(wù)間協(xié)作、管理和控制的分布式架構(gòu),用于構(gòu)建、集成、部署和監(jiān)控管理各種分布式資源。它是傳統(tǒng)消息中間件技術(shù)與Web Service、XML技術(shù)的結(jié)合,可以在異構(gòu)環(huán)境中實(shí)現(xiàn)信息穩(wěn)定、可靠的傳輸,屏蔽硬件層、操作系統(tǒng)層、網(wǎng)絡(luò)層等復(fù)雜接口,為用戶提供一個(gè)統(tǒng)一、標(biāo)準(zhǔn)的信息通道,保證邏輯應(yīng)用和底層平臺(tái)的松耦合,實(shí)現(xiàn)異構(gòu)平臺(tái)的數(shù)據(jù)交換、數(shù)據(jù)共享與應(yīng)用集成。
二、ESB功能與部署
2.1 ESB功能
ESB提供多種通訊協(xié)議的接入,不同通訊協(xié)議之間的轉(zhuǎn)換,不同數(shù)據(jù)格式的加工和處理,基于數(shù)據(jù)內(nèi)容的智能路由。其核心功能有:1、服務(wù)適配。服務(wù)適配負(fù)責(zé)把客戶端的請(qǐng)求消息轉(zhuǎn)換成滿足服務(wù)要求的內(nèi)容,并調(diào)用服務(wù),同時(shí)把服務(wù)的返回內(nèi)容轉(zhuǎn)換成滿足客戶端要求的格式。服務(wù)總線支持動(dòng)態(tài)消息的格式轉(zhuǎn)換,支持XQuery、XSLT、XPath等轉(zhuǎn)換標(biāo)準(zhǔn),支持HTTP/HTTPS、SOAP、JMS、MQ、FTP等傳輸協(xié)議。2、服務(wù)交換代理。代理服務(wù)是ESB架構(gòu)的一個(gè)核心概念。服務(wù)使用者經(jīng)由這個(gè)接口與已經(jīng)注冊(cè)的、后端業(yè)務(wù)系統(tǒng)的服務(wù)連接,可以實(shí)現(xiàn)多個(gè)系統(tǒng)的松散耦合的集成,實(shí)現(xiàn)服務(wù)系統(tǒng)的可插拔方式的接入,極大提高了系統(tǒng)集成的效率,降低了系統(tǒng)集成的復(fù)雜性,使得集成后的系統(tǒng)具有很高的靈活性,并且有利于遺留系統(tǒng)的重新應(yīng)用。3、數(shù)據(jù)轉(zhuǎn)換。數(shù)據(jù)轉(zhuǎn)換實(shí)現(xiàn)源服務(wù)與目的地服務(wù)間存在不同的數(shù)據(jù)類型,以及需要數(shù)據(jù)映射以便轉(zhuǎn)換數(shù)據(jù)的情況。4、動(dòng)態(tài)路由。在請(qǐng)求內(nèi)容的某些元素可能造成多目的地服務(wù)的情況下,ESB能根據(jù)消息內(nèi)容執(zhí)行動(dòng)態(tài)路由。動(dòng)態(tài)路由通過(guò)條件轉(zhuǎn)移語(yǔ)句(或服務(wù)調(diào)用)分析消息,從而檢索某個(gè)數(shù)據(jù)元素或多個(gè)數(shù)據(jù)元素的數(shù)值。不同的業(yè)務(wù)服務(wù)目的地被賦予這個(gè)條件檢查的不同數(shù)值組合,允許將消息動(dòng)態(tài)發(fā)送到多項(xiàng)業(yè)務(wù)服務(wù)。
2.2 ESB典型部署模式
ESB作為SOA集成層組件的核心,其應(yīng)用和部署方式較為靈活,ESB部署的典型模式如表1所示。
(1) 單一模式。單一模式(如圖1所示)為最基本的ESB部署模式,每個(gè)服務(wù)提供者對(duì)環(huán)境中所有請(qǐng)求者均可見(jiàn),服務(wù)提供者與消費(fèi)者通過(guò)ESB進(jìn)行數(shù)據(jù)交換,且所有的交換內(nèi)容都置于ESB的管理之中。該模式主要應(yīng)用于部門或小型組織中使用。
(2) 總分模式??偡帜J剑ㄈ鐖D2所示)適用于組織內(nèi)具有分級(jí)關(guān)系的上下級(jí)部門之間進(jìn)行交互,而同級(jí)部門之間的服務(wù)交互需要經(jīng)過(guò)中心ESB進(jìn)行消息中轉(zhuǎn)。部門內(nèi)的服務(wù)交互本部門維護(hù)管理,同級(jí)部門之間的交互由上級(jí)部門進(jìn)行統(tǒng)一管理。因此,此種模式主要適用于上下級(jí)組織交互頻繁,而同級(jí)組織交互相對(duì)較少的場(chǎng)合。
(3) 代理模式。在代理模式(如圖3所示)中所有ESB都是對(duì)等的,不存在上下級(jí)關(guān)系。本組織內(nèi)的服務(wù)交互由組織內(nèi)ESB提供,跨組織的服務(wù)交互需要通過(guò)公共代理ESB進(jìn)行消息路由。這種模式可以有選擇地將請(qǐng)求者或提供者公開(kāi)給其他組織中的合作伙伴。
(4) 分散模式。在分散模式(如圖4所示)中,組織內(nèi)部各個(gè)業(yè)務(wù)部門擁有獨(dú)立的ESB管理部門內(nèi)的服務(wù),可以自主地實(shí)施解決方案。部門之間的聯(lián)系較為松散,跨部門通信時(shí),不進(jìn)行統(tǒng)一的管理。因此,當(dāng)需要跨部門通信時(shí),各ESB要通過(guò)一種標(biāo)準(zhǔn)的“橋接”技術(shù)相互訪問(wèn)。
(5) 統(tǒng)一模式。在統(tǒng)一模式(如圖5所示)中,整個(gè)組織具有邏輯上唯一的ESB,該ESB是由物理上遍布于各個(gè)部門的ESB節(jié)點(diǎn)構(gòu)成的,節(jié)點(diǎn)之間可以直接進(jìn)行通信并具有服務(wù)尋址、消息路由功能。這種模式主要用于高性能、高可靠性ESB集群內(nèi)部各節(jié)點(diǎn)間的互聯(lián)。
三、ESB性能分析
3.1 代理模式并發(fā)性能分析
ESB采用wso2esb-3.0.1.測(cè)試工具采用開(kāi)源工具jmeter2.4,用于產(chǎn)生并發(fā)請(qǐng)求,并記錄ESB在不同條件下的響應(yīng)時(shí)間。對(duì)WSO2的測(cè)試結(jié)果如圖6所示,Web Service的響應(yīng)時(shí)間隨請(qǐng)求的數(shù)據(jù)量增大而增大。在相同數(shù)據(jù)量情況下,并發(fā)數(shù)越大,響應(yīng)時(shí)間越長(zhǎng)。響應(yīng)時(shí)間并未隨數(shù)據(jù)量增大和并發(fā)數(shù)增大產(chǎn)生明顯劣化,具有一定的并發(fā)處理能力。
3.2 ESB數(shù)據(jù)轉(zhuǎn)換性能分析
ESB一般都是以XML為中心的,因此,ESB進(jìn)行XML格式轉(zhuǎn)換的能力就尤為重要,下面對(duì)并發(fā)條件下的XML數(shù)據(jù)轉(zhuǎn)換性能進(jìn)行測(cè)試分析。
XSLT轉(zhuǎn)換處理能力測(cè)試結(jié)果如圖7所示,在不同并發(fā)條件下每秒處理請(qǐng)求的能力仍然很強(qiáng),可見(jiàn),ESB的具有較強(qiáng)的XSLT轉(zhuǎn)換和處理能力。在圖8中,由XSLT轉(zhuǎn)換平均響應(yīng)時(shí)間可以看出,隨著并發(fā)數(shù)增加,平均響應(yīng)時(shí)間并未產(chǎn)生嚴(yán)重劣化,具有較強(qiáng)的并發(fā)處理能力??梢?jiàn),ESB具有較強(qiáng)的XSLT轉(zhuǎn)換處理能力,可以應(yīng)對(duì)大并發(fā)量的轉(zhuǎn)換處理。
另外,從圖9可以看出響應(yīng)時(shí)間并非均勻分布在平均響應(yīng)時(shí)間周圍,而是在平均響應(yīng)時(shí)間處有大量樣本,其他響應(yīng)區(qū)間內(nèi)也有少量樣本分布。隨著并發(fā)數(shù)的增加,響應(yīng)時(shí)間有逐漸變大的趨勢(shì),并有一些請(qǐng)求處理時(shí)間高于平均響應(yīng)時(shí)間數(shù)倍的情況出現(xiàn)。由此可見(jiàn),雖然ESB具有較強(qiáng)的XSLT并發(fā)轉(zhuǎn)換處理能力,但隨著并發(fā)量的增大,仍無(wú)法保證所有請(qǐng)求都會(huì)及時(shí)處理。
四、結(jié)論
企業(yè)服務(wù)總線(ESB)作為面向服務(wù)架構(gòu)(SOA)的核心組件,在信息服務(wù)集成方面具有重要作用。本文介紹了ESB的基本功能,并對(duì)各種典型應(yīng)用部署模式進(jìn)行對(duì)比分析,最后針對(duì)代理模式并發(fā)性能和數(shù)據(jù)轉(zhuǎn)換能力設(shè)計(jì)性能測(cè)試場(chǎng)景,并進(jìn)行定量測(cè)試,為更好的應(yīng)用ESB進(jìn)行信息服務(wù)集成提供有益參考。