摘 要 本文
研究了中間件產(chǎn)品BEA Tuxedo(Transaction for UNIX has been Extended for Distributed Operation)的特點和優(yōu)勢。并結(jié)合具體的例子研究了BEA Tuxedo的客服程序、服務(wù)程序的實現(xiàn),以及BEA Tuxedo的通信方式。
關(guān)鍵詞 BEA Tuxedo、中間件
引 言
中間件(Middleware)是近年來迅速
發(fā)展、壯大起來的一個軟件領(lǐng)域。在系統(tǒng)
應(yīng)用的層次信息結(jié)構(gòu)中,他處于操作系統(tǒng)和用戶應(yīng)用之間。對應(yīng)用程序來說,其主要作用是屏蔽操作系統(tǒng)的異構(gòu)和實現(xiàn)穩(wěn)定安全的支撐環(huán)境,以便于不同系統(tǒng)間的信息交換。開發(fā)人員編程時可以利用中間件產(chǎn)品提供的跨平臺的、統(tǒng)一的接口,來規(guī)避操作系統(tǒng)的差異。這在提高應(yīng)用程序的可移植性的同時也縮短了應(yīng)用開發(fā)的周期。
中間件用以提供客戶機與服務(wù)器之間的連接服務(wù),這些服務(wù)具有標(biāo)準(zhǔn)的程序接口和協(xié)議。針對不同的操作系統(tǒng)和硬件平臺,中間件能提供符合接口和協(xié)議規(guī)范的多種實現(xiàn)方式。由于標(biāo)準(zhǔn)接口對于可移植性和標(biāo)準(zhǔn)協(xié)議對于互操作性的重要性,中間件已成為許多標(biāo)準(zhǔn)化工作的主要部分。
中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源。中間件系統(tǒng)管理著客戶端程序和數(shù)據(jù)庫或者早期應(yīng)用軟件之間的通訊。而且中間件在分布式的客戶和服務(wù)之間扮演著承上啟下的角色,如事務(wù)管理、負載均衡以及基于Web的
計算等。
1 主要中間件的分類
中間件包括的范圍十分廣泛,針對不同的需求涌現(xiàn)出多種各具特色的中間件產(chǎn)品。由于中間件需要屏蔽分布環(huán)境中異構(gòu)的操作系統(tǒng)和
網(wǎng)絡(luò)協(xié)議,它必須能夠提供分布環(huán)境下的通訊服務(wù),我們將這種通訊服務(wù)稱之為平臺。基于目的和實現(xiàn)機制的不同,我們將平臺分為以下主要幾類:
⑴ 遠程過程調(diào)用(Remote Procedure Call)
⑵ 面向消息的中間件(Message-Oriented Middleware)
⑶ 對象請求代理(Object Request Brokers)
平臺可向上提供不同形式的通訊服務(wù),包括同步、排隊、訂閱發(fā)布、廣播等等。在這些基本的通訊平臺之上,可構(gòu)筑各種框架,為應(yīng)用程序提供不同領(lǐng)域內(nèi)的服務(wù),如事務(wù)處理監(jiān)控器、分布數(shù)據(jù)訪問、對象事務(wù)管理器OTM等。平臺為上層應(yīng)用屏蔽了異構(gòu)操作系統(tǒng)的差異,而其上的框架又定義了相應(yīng)領(lǐng)域內(nèi)的系統(tǒng)結(jié)構(gòu)、標(biāo)準(zhǔn)的服務(wù)組件等。用戶只需告訴框架所關(guān)心的事件,然后提供處理這些事件的代碼,事件發(fā)生時,框架調(diào)用用戶的代碼。用戶代碼不用調(diào)用框架,用戶程序也不用關(guān)心框架結(jié)構(gòu)、執(zhí)行流程、對系統(tǒng)級API的調(diào)用等,所有這些都由框架負責(zé)完成。因此,基于中間件開發(fā)的應(yīng)用具有良好的可擴充性、易管理性、高可用性和可移植性。
中間件產(chǎn)品TUXEDO是Transaction for UNIX has been Extended for Distributed Operation的簡稱,即被分布式操作擴展之后的UNIX事務(wù)系統(tǒng) 。TUXEDO是一個基于消息類型的中間件產(chǎn)品,在1984年由AT&&T的貝爾實驗室開發(fā)完成的。1995年被BEA公司收購。BEA TUXEDO是在
企業(yè)、Internet 這樣的分布式運算環(huán)境中開發(fā)和管理三層結(jié)構(gòu)的客戶/服務(wù)器型關(guān)鍵任務(wù)應(yīng)用系統(tǒng)的強有力工具。它具備分布式事務(wù)處理和應(yīng)用通信功能,并提供完善的各種服務(wù)來建立、運行和管理關(guān)鍵任務(wù)應(yīng)用系統(tǒng)。開發(fā)人員能夠用它建立跨多個硬件平臺、數(shù)據(jù)庫和操作系統(tǒng)的可互操作的應(yīng)用系統(tǒng)。 TUXEDO中間件的工作原理如圖一所示:
Client向System/T發(fā)出查詢請求,以找到Server消息隊列的地址;
Client根據(jù)找到的入口地址將請求發(fā)送到Server的消息隊列中;

圖1 tuxedo中間件工作原理
Server處理請求,并將結(jié)果返回給Client的消息隊列。 System/T是Tuxedo系統(tǒng)的核心,它實現(xiàn)了Tuxedo的所有功能和特征,如C/S數(shù)據(jù)流管理、服務(wù)請求的負載均衡、全局事務(wù)管理以保證交易的完整性、同步/異步服務(wù)請求、兩階段提交以確保消息的發(fā)送等。System/T提供了一個類似公告欄的服務(wù),用以發(fā)布C/S計算機環(huán)境中所有服務(wù)器、服務(wù)和客戶機的信息,供其它分布式計算的參與者使用。
中間件產(chǎn)品TUXEDO的特點[1]:
⑴ 分布式交易管理:BEA Tuxedo使客戶機和服務(wù)器可參與涉及多個數(shù)據(jù)庫協(xié)調(diào)更新的分布式交易。并確保所有數(shù)據(jù)庫的正確更新或恢復(fù)到初始狀態(tài),從而在任何組件出現(xiàn)故障時均能保證數(shù)據(jù)的完整性;
⑵ 高可用性:BEA Tuxedo的一個主要性能是保證對系統(tǒng)組件進行持續(xù)的監(jiān)視,查看應(yīng)用系統(tǒng)、交易、網(wǎng)絡(luò)及硬件是否出現(xiàn)故障。一旦出現(xiàn)故障,BEA Tuxedo會從邏輯上把故障組件從系統(tǒng)中排除,管理必要的恢復(fù)程序并重新為消息和交易選擇路由,以使系統(tǒng)繼續(xù)運行。對于最終用戶而言,所有這些都是完全透明的,且不需要中斷服務(wù);
⑶ 動態(tài)負載均衡:BEA Tuxedo可以根據(jù)系統(tǒng)的負載指示,自動開啟和關(guān)閉應(yīng)用服務(wù),以滿足對應(yīng)用系統(tǒng)的高強度使用需求。同時還可以均衡所有可用系統(tǒng)的負載,以確保無論服務(wù)是在同一個節(jié)點還是分布在節(jié)點之間系統(tǒng)都能被平均使用資源,達到負載均衡;
⑷ 數(shù)據(jù)依賴路由(DDR):BEA Tuxedo可按照消息的傳輸?shù)年P(guān)鍵路由信息來選擇消息路由。這樣就能夠?qū)崿F(xiàn)交易的高效處理,并發(fā)揮最佳性能;
⑸ 安全性:BEA Tuxedo支持加密(LLE安全機制),當(dāng)跨網(wǎng)絡(luò)部署B(yǎng)EA Tuxedo應(yīng)用系統(tǒng)時,這些安全性機制可確保用戶數(shù)據(jù)的保密性。Tuxedo還提供了插件程序機制,支持公共密鑰和數(shù)字簽名,以及連接應(yīng)用系統(tǒng)的非BEA安全產(chǎn)品,保證了系統(tǒng)的安全性。
⑹ 應(yīng)用系統(tǒng)并行化:BEA Tuxedo通過動態(tài)復(fù)制整個網(wǎng)絡(luò)中的分布式應(yīng)用系統(tǒng),可使
電子商務(wù)應(yīng)用系統(tǒng)發(fā)揮最佳性能。同時Tuxedo允許應(yīng)用系統(tǒng)并行處理請求,并發(fā)處理位于不同分布式節(jié)點上的業(yè)務(wù)請求,提高開發(fā)效率。
⑺ 提供Application To Transaction Manager Interface—ATMI:BEA TUXEDO提供的 ATMI支持為50多種硬件平臺和操作系統(tǒng)提供了一致的應(yīng)用編程接口。ATMI讓開發(fā)人員不用考慮程序所在的硬件環(huán)境,直接編寫B(tài)EA Tuxedo應(yīng)用系統(tǒng)。
3 中間件產(chǎn)品TUXEDO開發(fā)
TUXEDO應(yīng)用開發(fā)主要包括到客戶端程序、服務(wù)端程序的開發(fā)。BEA Tuxedo提供了一個其于C語言的編程接口,即應(yīng)用程序事務(wù)監(jiān)控接口ATMI,以便用于開發(fā)客戶程序和服務(wù)程序。除了C語言接口外,BEA Tuxedo還提供
了COBOL接口。在Bea Tuxedo系統(tǒng)中的客戶端到服務(wù)端的通信過程都是通過類型緩沖區(qū)來完成的,Bea Tuxedo系統(tǒng)提供了大量的類型緩沖區(qū)來供使用。所有類型緩沖區(qū)都必須通過Bea Tuxedo的tpalloc(), tprealloc(), tpfree()這些公共ATMI來分配回收
[2]。
3.1 創(chuàng)建BEA TUXEDO客戶端程序
客戶程序一般執(zhí)行如下任務(wù):
⑴ 調(diào)用tpchkauth()決定加入一個
應(yīng)用程序所需的安全級別。可能出現(xiàn)的響應(yīng)包括:沒有安全級別,應(yīng)用程序口令,應(yīng)用程序授權(quán),訪問控制列表,連接級加密,公鑰加密,審計。這些可以根據(jù)你的需求進行選擇;
⑵ 調(diào)用tpinit()來連接到一個BEA Tuxedo應(yīng)用程序,所需的安全信息作為tpinit()的參數(shù)傳給了應(yīng)用程序;
⑶ 執(zhí)行服務(wù)請求;
⑷ 調(diào)用tpterm()來斷開和BEA Tuxedo應(yīng)用程序的連接。
客戶端程序調(diào)用流程如圖2所示:
圖2 創(chuàng)建BEA TUXEDO客戶端程序
3.2 創(chuàng)建BEA TUXEDO服務(wù)端程序
服務(wù)程序一般執(zhí)行如下任務(wù):
⑴ 在BEA Tuxedo服務(wù)程序啟動時,執(zhí)行tpsvrinit()函數(shù),可以在里面打開一些如數(shù)據(jù)庫之類的資源供以后使用;
⑵ 在BEA Tuxedo服務(wù)程序關(guān)閉時,執(zhí)行tpsvrdown()函數(shù),可以在里面關(guān)閉tpsvrinit()中打開的資料;
⑶ BEA Tuxedo服務(wù)程序以服務(wù)的形式來響應(yīng)客戶程序的請求,客戶程序不是通過名字來調(diào)用服務(wù)程序的,而是調(diào)用服務(wù),客戶程序不知道處理它請求的服務(wù)程序的位置;
⑷ 服務(wù)程序調(diào)用tpreturn()函數(shù)來結(jié)束服務(wù)請求,并返回一個緩沖區(qū),必要時,將它傳給客戶程序;
服務(wù)端程序調(diào)用流程如圖3所示:
圖3 創(chuàng)建BEA TUXEDO服務(wù)端程序
4 BEA TUXEDO通訊緩沖區(qū):
TUXEDO之間通過統(tǒng)一定義的類型緩沖區(qū)進行通訊,類型緩沖區(qū)可以使應(yīng)用跨越不同
網(wǎng)絡(luò)、不同協(xié)議、不同CPU構(gòu)架以及不同操作系統(tǒng)之間得到統(tǒng)一的處理,這就使得開發(fā)者在分布式
計算環(huán)境中有效地避開了異構(gòu)網(wǎng)絡(luò)和異構(gòu)計算機系統(tǒng)帶來的差異,只需進行商業(yè)邏輯的開發(fā)上。通訊緩沖區(qū)結(jié)構(gòu)如圖4所示:

圖4 TUXEDO通訊緩沖區(qū)
BEA TUXEDO提供以下幾種通訊方式[3]:
⑴ 同步請求/應(yīng)答通信
⑵ 異步請求/應(yīng)答通信
⑶ 嵌套調(diào)用通信
⑷ 轉(zhuǎn)發(fā)調(diào)用通信
⑸ 會話通信
⑹ 消息通告通信
⑺ 基于事件通信
⑻ 隊列通信
⑼ 事務(wù)控制通信
5 結(jié)束語:
隨著系統(tǒng)的規(guī)模不斷
發(fā)展,對系統(tǒng)進行有效分布式處理,提高資源利用率的要求越來越高,因此從客戶/數(shù)據(jù)庫方案轉(zhuǎn)變到三層客戶/應(yīng)用系統(tǒng)/數(shù)據(jù)服務(wù)器結(jié)構(gòu)是業(yè)界發(fā)展的趨勢。本文討論了主要中間件架構(gòu)的優(yōu)勢,并
分析了中間件產(chǎn)品BEA TUXEDO的開發(fā)模式和特點。分析BEA TUXEDO常見的通訊方式,包括同步請求/應(yīng)答通信、異步請求/應(yīng)答通信、嵌套調(diào)用通信、轉(zhuǎn)發(fā)調(diào)用通信、會話通信、消息通告通信、基于事件通信、隊列通信、事務(wù)控制通信的方式,并結(jié)合通訊方式分析了TUXEDO的客服程序和服務(wù)程序偽代碼和部分ATMI函數(shù)。
1 BEA Tuxedo 8.0 Documentation for the e-generation e-docs.bea.com
2 徐春金. TUXEDO中間件開發(fā)與配置[M].
中國電力出版社
3 Chris Britton. IT體系結(jié)構(gòu)與中間件——建設(shè)大型集成系統(tǒng)的策略[M]. 人民郵電出版社