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

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

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