想要學(xué)習(xí)如何優(yōu)化面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)中的 Web 服務(wù)應(yīng)用程序嗎?Judith M. Myerson 強(qiáng)調(diào)了業(yè)務(wù)流程規(guī)則在優(yōu)化 Web 服務(wù)的過程中具有最高優(yōu)先級的重要性,并給出了其他優(yōu)化技術(shù)的例子,例如減少 Web 請求的數(shù)量和執(zhí)行時間。 她還討論了 IBM WebSphere Business Integration,開發(fā)人員和業(yè)務(wù)分析人員可以使用這個工具來協(xié)作建模 Web 服務(wù),以便進(jìn)行優(yōu)化 。
引言
在這個系列的第 1 部分中,我展示了如何執(zhí)行 Web 服務(wù)的業(yè)務(wù)邏輯來使專有的企業(yè)應(yīng)用程序集成(Enterprise Application Integration,EAI)應(yīng)用程序可以交互。在第 3 部分中,我指出了 Web 服務(wù)如何相互通信來交流集成和實現(xiàn)多個 SOA 中的流程的方式。同樣,我還在第 4 部分中討論了開發(fā)人員可以如何使用 Rational? 開發(fā)工具來創(chuàng)建實際的應(yīng)用程序。
在本文中,我將討論在優(yōu)化 Web 服務(wù)和 SOA 的過程中具有最高優(yōu)先級的 Web 服務(wù)的業(yè)務(wù)流程規(guī)則。一旦開發(fā)人員優(yōu)化了流程規(guī)則,那么他們就可以開始減少:
- Web 請求的數(shù)量
- 執(zhí)行時間
- 訪問時間
- 不需要的數(shù)據(jù)
- 帶寬量
開發(fā)人員還需要考慮連接到一個或多個 Web 服務(wù)的大型數(shù)據(jù)庫的分區(qū)方案。
業(yè)務(wù)流程規(guī)則
為了減少通信量瓶頸或者加載開銷,開發(fā)人員需要使用某些業(yè)務(wù)流程規(guī)則來優(yōu)化跨 SOA 的 Web 服務(wù)的性能。他們應(yīng)該使用用于 Web 服務(wù)的業(yè)務(wù)流程執(zhí)行語言(Business Process Execution Language for Web Services,BPEL4WS)規(guī)范來創(chuàng)建新的業(yè)務(wù)邏輯、調(diào)用 Web 服務(wù)、操作數(shù)據(jù)、拋出錯誤或者終止流程。
您可以使用可執(zhí)行的流程基于業(yè)務(wù)邏輯組成新的 Web 服務(wù),以便實現(xiàn)組織的業(yè)務(wù)目標(biāo)。您還可以使用抽象的流程作為兩個合作伙伴之間在電子商務(wù)對話中如何進(jìn)行交互的協(xié)議。
Web 請求
在優(yōu)化業(yè)務(wù)流程規(guī)則之后,開發(fā)人員可以繼續(xù)開發(fā)他們所需要的 Web 請求,從現(xiàn)有的 Web 服務(wù)構(gòu)建新的 Web 服務(wù)。Web 服務(wù)是在 SOA 內(nèi)部還是跨 SOA 都沒有關(guān)系。如果新的 Web 服務(wù)——業(yè)務(wù)邏輯或者以數(shù)據(jù)為中心——提供更好的或者額外的服務(wù)或功能,開發(fā)人員必須減少或者完全消除冗余的 Web 請求。圖 1 展示了兩個現(xiàn)有的 Web 服務(wù)各自發(fā)送了一個冗余的 Web 請求來創(chuàng)建新的 Web 服務(wù)。
圖 1. 冗余的 Web 請求
執(zhí)行時間
在開發(fā)人員優(yōu)化了現(xiàn)有的 Web 服務(wù)可以發(fā)出的請求數(shù)量之后,他們還需要減少現(xiàn)有的 Web 服務(wù)的執(zhí)行時間,以便在組合生命周期的任何時刻基于業(yè)務(wù)流程創(chuàng)建新的 Web 服務(wù)。以數(shù)據(jù)為中心的 Web 服務(wù)極少自己執(zhí)行。
當(dāng)開發(fā)人員組合新的 Web 服務(wù)時,他們應(yīng)該當(dāng)心不要導(dǎo)致新的冗余。為了消除冗余,可能需要將某些冗余的 Web 服務(wù)合并成為一個服務(wù)。
訪問時間
如果給定最佳的執(zhí)行時間,則減少訪問時間是開發(fā)人員需要關(guān)心的另一個問題。當(dāng) Web 服務(wù)請求比較簡單時,從數(shù)據(jù)庫或者另外的數(shù)據(jù)源中訪問所請求的信息的時間必須是最佳的。在使用和發(fā)布 Web 服務(wù)時必須注意請求不要互相重疊。
開發(fā)人員應(yīng)該模塊化、最優(yōu)化和索引化請求,以便減少訪問時間。然后,他們可以將 Web 請求放在儲存庫中,以便在新的應(yīng)用程序中重用。
帶寬量
正如您所知道的,Web 服務(wù)基于 XML,并且大部分文件都很小。通常帶寬不是問題,而且執(zhí)行和訪問時間也都是最佳的。問題在于大的 XML 文件。當(dāng)您每次更改遠(yuǎn)程服務(wù)器上的這些文件時,您需要重新傳輸整個文件。大的未壓縮格式的圖形文件可以消耗掉大量的磁盤空間和帶寬量,從而延緩了訪問時間。
作為部分的解決方案,開發(fā)人員只需要傳輸對新的 Web 服務(wù)的文件的更改。其他節(jié)省帶寬的技術(shù)包括:加速頁面加載的緩存技術(shù)、優(yōu)化解析文本格式的 XML 文件的時間,以及將 XML 文件編譯成二進(jìn)制文件(不可讀的)。
不需要的數(shù)據(jù)
開發(fā)人員應(yīng)該指定篩選規(guī)則來清除他們不想要的數(shù)據(jù)。篩選規(guī)則與針對減少數(shù)據(jù)冗余的標(biāo)準(zhǔn)化規(guī)則不是一回事。他們同樣也應(yīng)該優(yōu)化篩選規(guī)則,然后將它們(XML 格式)存儲到儲存庫中,供以后調(diào)用。您可以在需要這些規(guī)則時從儲存庫中加載它們,而在您不需要時將它們卸載回儲存庫。篩選規(guī)則還應(yīng)該包括對舊數(shù)據(jù)的自動清除或者備份、以及使大的 XML 文件不久后過期的機(jī)制。
分區(qū)方案
當(dāng) Web 服務(wù)連接到大型數(shù)據(jù)庫時,應(yīng)該注意是如何跨服務(wù)器訪問、篩選和分發(fā)數(shù)據(jù)的,尤其是在后者位于不同的 SOA 中的情況下。為了在減少帶寬的同時更快地進(jìn)行訪問,開發(fā)人員應(yīng)該考慮兩件事情:
- 數(shù)據(jù)庫的更新頻率
- 數(shù)據(jù)庫更新部分的大小
如果數(shù)據(jù)庫的大部分經(jīng)常都需要更新,那么您應(yīng)該考慮分區(qū)方案:硬件分區(qū)、水平分區(qū)或者垂直分區(qū)。而如果數(shù)據(jù)庫只是一小部分經(jīng)常需要更新,那么就考慮動態(tài)分區(qū)。
硬件分區(qū)
您可以使用獨立磁盤冗余陣列(Redundant Array of Independent Disk,RAID)進(jìn)行硬件分區(qū),物理地將表放在單獨的磁盤驅(qū)動器上而不必分割表。把一個表放在一個物理驅(qū)動器上而把其他的表放在單獨的驅(qū)動器上可以提高吞吐量和操作效率。另外,您還可以選擇將一個表拆開,放到多個驅(qū)動器上,這樣比將同一個表存儲在一個驅(qū)動器上掃描起來快。
水平分區(qū)
您可以基于年代水平地對數(shù)據(jù)進(jìn)行分區(qū)。例如,您可以將一個大表分成十個小的子表,每個子表包括十年中的一年的數(shù)據(jù)和業(yè)務(wù)流程規(guī)則。
垂直分區(qū)
您可以使用這種方法將表分成若干個子表。您可以應(yīng)用規(guī)范化的概念刪除表的冗余部分,然后將它們放在次表中。您還可以在次表中建立外鍵,以鏈接主表中的主鍵。
動態(tài)分區(qū)
在某種情況下,您可能需要經(jīng)常更新數(shù)據(jù)中相對較小而非常重要的子集,我們假定您的數(shù)據(jù)庫中的絕大多數(shù)信息相對來說是靜態(tài)的。如下面的圖 2 所示,您需要分別按頻繁更新和很少更新將數(shù)據(jù)庫分成動態(tài)部分和靜態(tài)部分。
圖 2. 動態(tài)部分和靜態(tài)部分
這就意味著您需要以這樣的方式設(shè)計數(shù)據(jù)庫系統(tǒng),即將數(shù)據(jù)庫表劃分成兩種類型——靜態(tài)和動態(tài)——的模塊化、最優(yōu)化部分。您可以將靜態(tài)的部分保存在本地服務(wù)器上,而將動態(tài)的部分轉(zhuǎn)移到遠(yuǎn)程服務(wù)器供用戶頻繁地更新。您可以通過跨一組本地服務(wù)器和另一組遠(yuǎn)程服務(wù)器分割表來實現(xiàn)這一點。當(dāng)新的 Web 服務(wù)更新數(shù)據(jù)庫時,這種方法可以幫助減少多個數(shù)量級的帶寬使用。
消除語言隔閡
開發(fā)人員和業(yè)務(wù)分析人員應(yīng)該找到優(yōu)化 Web 服務(wù)和 SOA 的方法的共同基礎(chǔ)。這種方法存在的一個問題就是,他們往往使用不同的語言,使用不同的術(shù)語,并且具有不同的知識背景。
例如,業(yè)務(wù)分析人員使用流程模型來處理業(yè)務(wù)需求,而開發(fā)人員使用統(tǒng)一建模語言(Unified Modeling Language,UML)模型來專注于他們想要優(yōu)化的 Web 服務(wù)的系統(tǒng)功能。解決這個問題的一種方法就是進(jìn)行 UML 和業(yè)務(wù)流程建模(Business Process Modeling,BPM)模型之間的集成和轉(zhuǎn)換。這將有助于進(jìn)行良好的溝通,并減少由于缺乏交流而帶來的成本。
WebSphere Business Integration 工具
下面是 IBM WebSphere? Business Integration(以前稱為 IBM Holosofx)工具,您可以使用它們來消除這種隔閡:
-
IBM WebSphere Business Integration Workbench:這是一個 BPM 工具,您可以使用它通過共同的 UML/BPM 工作區(qū)來消除業(yè)務(wù)分析人員或經(jīng)理與開發(fā)人員之間的隔閡。
-
IBM WebSphere Business Integration Monitor:使用這個工具,您可以顯示來自 WebSphere MQ Workflow 所產(chǎn)生的事件的實時數(shù)據(jù)和歷史數(shù)據(jù)。通過查看業(yè)務(wù)控制、業(yè)務(wù)和 IT 的工作流 (Workflow) 和業(yè)務(wù)儀表板 (Business Dashboard),您可以優(yōu)化和管理業(yè)務(wù)性能。
-
IBM WebSphere Business Integration Workbench Server:這個工具向您提供儲存庫管理和 Web 發(fā)布功能。使用這個工具,您可以促進(jìn)如下幾方面的流程設(shè)計協(xié)作和即時 Web 訪問:
- 流程模型
- 策略
- 過程
- 業(yè)務(wù)規(guī)則
-
IBM WebSphere Business Integration Modeler Advanced Edition:您可以在協(xié)作環(huán)境中使用這個工具來設(shè)計與多個用戶交互的流程。這款產(chǎn)品由 IBM WebSphere Business Integration Workbench Server 和 IBM WebSphere Business Integration Workbench 許可捆綁組成。您可以在 Windows? 2000 或者 Windows XP 操作系統(tǒng)中運(yùn)行 WebSphere Business Integration Modeler Advanced Edition。
結(jié)束語
優(yōu)化跨 SOA 的 Web 服務(wù)需要提前計劃實際上有多少依賴于業(yè)務(wù)規(guī)則的 Web 服務(wù)可以優(yōu)化。開發(fā)人員應(yīng)該就 Web 服務(wù)設(shè)計中使用什么建模技術(shù)和優(yōu)化方案的問題與業(yè)務(wù)分析人員團(tuán)隊進(jìn)行溝通。通過預(yù)先解決這個問題,開發(fā)人員將會發(fā)現(xiàn)他們優(yōu)化 Web 服務(wù)的工作變得更加容易了。他們可以開發(fā)和優(yōu)化相互交互和集成——在 SOA 內(nèi)部以及跨 SOA——的 Web 服務(wù)。
分析人員同樣也會發(fā)現(xiàn),預(yù)先解決這些問題使他們設(shè)計和分析優(yōu)化 Web 服務(wù)的業(yè)務(wù)端工作變得更加容易了。他們可以確定使用哪種建模方法、使用什么方案、以及在 SOA 中有多少 Web 服務(wù)可以優(yōu)化。