TUXEDO中间件介绍及应用
TUXEDO中間件介紹及應用??
2013-08-22 15:09:54|??分類: Networks |??標簽: |舉報 |字號大中小?訂閱
用微信??“掃一掃”
將文章分享到朋友圈。
用易信??“掃一掃”
將文章分享到朋友圈。
下載LOFTER 我的照片書??|一、?前言
首先介紹一下什么是中間件?中間件是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位于客戶機服務器的操作系統之上,管理計算資源和網絡通信。
中間件屏蔽了底層操作系統的復雜性,使程序開發人員面對一個簡單而統一的開發環境,減少程序設計的復雜性,將注意力集中在自己的業務上,不必再為程序在不同系統軟件上的移植而重復工作,從而大大減少了技術上的負擔。
世界著名的咨詢機構Standish?Group在一份研究報告中歸納了中間件的十大優越性:?
l?
l?縮短應用的開發周期
l?節約應用的開發成本?
l?減少系統初期的建設成本?
l?降低應用開發的失敗率?
l?保護已有的投資?
l?簡化應用集成?
l?減少維護費用?
l?提高應用的開發質量?
l?保證技術進步的連續性?
l?增強應用的生命力
Tuxedo是第一個嚴格意義上的中間件產品。Tuxedo是1984年在當時屬于AT&T的貝爾實驗室開發完成的,但Tuxedo在很長一段時期里只是實驗室產品。直到BEA公司1995年收購Tuxedo后,使Tuxedo現已經發展成為交易中間件領域事實上的標準。
TUXEDO是在企業、Internet?這樣的分布式運算環境中,開發和管理三層結構的客戶/服務器型關鍵任務應用系統的強有力工具。它具備分布式事務處理和應用通信功能,并提供完善的各種服務來建立、運行和管理關鍵任務應用系統。開發人員能夠用它建立跨多個硬件平臺、數據庫和操作系統的可互操作的應用系統。
二、?TUXEDO的組件軟件模型
TUXEDO采用三層結構的組件軟件模型。
圖1??BEA?TUXEDO?的組件軟件模型概要
圖1表示TUXEDO的組件軟件模?型的概要。該結構分為三層:
l?客戶為第一邏輯層,實現用戶交互和數據表示,向第二層的服務器請求調用核心的業務邏輯處理服務,比如數據庫的讀取和更新。
l?中間層為服務器組件,這些組件由BEA?TUXEDO管理,實現核心的業務邏輯服務,并將這些服務按名字廣播,接受并處理從客戶或其他服務器發出的請求這些服務的消息,并將處理結果返回給請求者,即客戶或其他服務器。
l?資源管理器,比如像關系數據庫,構成模型的第三層,負責管理應用系統的數據資源。服務器組件在完成服務的過程中通過資源管理器存取它管理的數據,或者說請求資源管理器的數據服務。
相對于以數據庫為中心的的兩層客戶/數據庫服務器模型,BEA?TUXEDO的三層結構模型,客戶/應用服務器/數據庫將應用的業務邏輯和用戶界面的表示分開。?這樣就允許開發人員專注于應用的核心業務邏輯的劃分、封裝、與相互作用,快速建立系統的核心業務功能的原型。
?另外,明確地劃分界面表示和業務邏輯,對用戶有效地管理應用系統也是意義重大。對具有成百上千個客戶的兩層結構的系統來說,經常性的更新、升級系統是一項十分棘手的維護工作,尤其是當系統已經投入實地運行以后。三層模型將用戶交互的表示部分與內部的業務邏輯分開,這樣對業務邏輯的一些修改甚至數據庫模式的改動經常都不要求客戶的改動。而且,將核心業務邏輯組件和表示邏輯及數據層劃分開,BEA?TUXEDO可以在服務級別上非常有效地管理應用的運行。它可以動態地管理消息流程和服務請求,快速啟動和停止服務器,根據變化的負荷復制服務器,動態地廣播、撤消服務器中的服務,將服務從一個服務器轉移到另一個服務器等等。這些對中間層應用的服務級別上的管理大大增加了分布式應用的伸縮性和靈活性。
三、?TUXEDO的特點
1.?分布式環境中更高水平的數據完整性
TUXEDO設計了數據資源的絕對完整性,能確保異構(或同構)的數據庫以及它資源管理器之間的完整性。
2.?非常高的性能
TUXEDO使多個客戶連接到一個服務器進程,由這個服務器進程存取數據庫,這樣,數據庫為處理連接所需的資源大大減少。?另一方面,網絡上流動的只有相對較少的客戶或服務器的請求和服務器處理的結果。
此外,TUXEDO特有的一些機制也能極大提高應用系統的性能。比如利用異步RPC機制實現扇出并行,利用轉發機制實現流水線并行,利用多服務器單隊列實現多處理并行等。所有這些因素使TUXEDO的應用系統具有極高的性能。世界上大部分硬件服務器的RPC性能指標都是在TUXEDO上完成的。
另外,可將Service根據優先級的不同賦權值,系統根據優先級權值將客戶請求(Service)排隊管理。
3.?平衡負載。
有多臺機器做應用服務器時,系統可自動根據每個機器的負載情況決定服務程序在負載小的那一臺機器上執行。?
4.?高可用性
在分布式系統中某一服務器節點發生故障時,TUXEDO能在硬件故障情況下在其它結點上重新運行進程,以保證服務提供的穩定性。
TUXEDO還可多臺應用服務器互相備份。
5.?系統的安全性
TUXEDO通過結構化用戶界面支持應用服務的驗證、授權和存取控制,允許用戶加入自己的驗證服務模塊。TUXEDO還提供信息加密服務,允許對網絡上傳輸的信息按RSA?的RC4算法加密。
6.?減輕開發人員、系統管理人負擔
BEA?TUXEDO的三層結構,使開發人員能夠按組件的思想專注入于業務邏輯的開發,用戶界面部分可用流行的前端開發工具來快速完成。而客戶和服務器之間、服務器和服務器之間的通訊,異構平臺之間的數據變換,以及服務器和數據庫之間的集成和事務控制都由?TUXEDO來完成。
TUXEDO系統提供從一個中心點對整個分布式系統進行全局監控及管理的能力,?管理員能根據一個整體系統視圖(而不僅是單個節點或單元)提供的信息,作出決定和采取動作。
7.?使系統的安裝與升級更容易
TUXEDO?的三層結構組件軟件模型下開發的應用程序以服務器組件和客戶組件為安裝、升級的單位,當一個組件需要更新時,管理人員甚至能夠在運行系統不停機的情況下完成系統的升級,
8.?開放系統中最開放的中間件平臺
TUXEDO是一個非常開放的平臺,支持三十多種服務器平臺,包括大多數的?UNIX服務器?,WindowsNT?服務器,IBM的S/370,S/390,加上AS/400和?Tandem公司的?NonStop系統。它的客戶支持幾乎所有的工作站,包括?UNIX,MS-DOS,Windows系列,OS/2,Macintosh等。
TUXEDO支持X/Open組織?的分布式?事務?處?理?模型DTP,事務定界標準TX,?應用程序事務處理接口標準XA?TMI以及?和資源?管理?器?(像數據庫系統)的接口標準XA,并且還支持事務處理器之間的互操作標準OSI-TP。?BEA?TUXEDO的客戶端通過DLL?可以和Visual?C++、Visual?Basic、?Power?Builder、?SQL?Windows、Delphi、Develop/2000?以及其他4GL和CASE?工具互連。
9.?系統的伸縮性
軟件可伸縮性就是可以很容易地增加被支持的用戶數和應用的全局吞吐量。?
BEA?TUXEDO支持二維的可伸縮性。二維可伸縮性可在結構上的任意位置添加異質?資源,而不改變已存在的應用的結構。允許對一個復雜的混合結構的支持,為聯機網絡系統提供了廣泛的規模選擇范圍。任何與數據表示有關的(如不同的處理器表示)可以由TUXEDO透明地解決。
10.?廣泛的開發工具支持
除了像C,C++和COBOL這樣的第三代語言編程環境,TUXEDO系統享受最廣泛的第三方工具的支持。
并有豐富的通信方式。有同步調用、異步調用、管道通信、會話、廣播、通知、隊列、發布訂閱等通信方式,能很好地滿足應用開發的要求。?
四、?TUXEDO工作原理
Tuxedo可以有效地整合企業異構C/S系統,實現大規模的關鍵業務處理和分布式事務管理,從而為企業提供一個可靠的、高性能的、易維護的三層分布式計算機環境。圖2展示了一個基本Tuxedo系統的組成和工作原理。
圖2?Tuxedo系統的組成和工作原理
①?Client向System/T發出查詢請求,以找到Server消息隊列的地址;?
②?Client根據找到的入口地址將請求發送到Server的消息隊列中;?
③?Server處理請求,并將結果返回給Client的消息隊列。?
System/T是Tuxedo系統的核心,它實現了Tuxedo的所有功能和特征,如C/S數據流管理、服務請求的負載均衡、全局事務管理以保證交易的完整性、同步/異步服務請求、兩階段提交以確保消息的發送等。System/T提供了一個類似公告欄的服務,用以發布C/S計算機環境中所有服務器、服務和客戶機的信息,供其它分布式計算的參與者使用。
五、?TUXEDO的開發
創建使用Tuxedo的程序與在C和C++編程語言中創建其它應用程序一樣,Tuxedo提供了一個其于C語言的編程接口,即應用程序事務監控接口ATMI,這套接口很容易使用,以便用于開發客戶程序和服務程序。除了C語言接口外,Tuxedo還提供了COBOL接口。
1.?開發客戶端程序
1)?調用tpchkauth()決定加入一個應用程序所需的安全級別。可能出現的響應包括:沒有安全級別,應用程序口令,應用程序授權,訪問控制列表,連接級加密,公鑰加密,審計。這些可以根據你的需求進行選擇。
2)?調用tpinit()來連接到一個Tuxedo應用程序,所需的安全信息作為tpinit()的參數傳給了應用程序。
3)?調用tpcall()、tpacall()/tpgetrply()等來執行服務請求。
4)?調用tpterm()來斷開和BEA?Tuxedo應用程序的連接。
2.?開發服務端程序
服務程序不用全部由開發者來編寫,開發者只需寫一些稱為服務的商業函數,然后和Tuxedo的一些二進制程序聯編成一個可執行的服務程序。Tuxedo服務程序啟動后,它總是保持運行狀態,只到接收到一個shutdown消息為止。一個典型的Tuxedo服務程序在shutdown或reboot之前都在執行著數千個服務。
⑴.?在Tuxedo服務程序啟動時,執行tpsvrinit()函數,可以在里面打開一些如數據庫之類的資源供以后使用;
⑵.?在Tuxedo服務程序關閉時,執行tpsvrdown()函數,可以在里面關閉tpsvrinit()中打開的資料;
⑶.?Tuxedo服務程序以服務的形式來響應客戶程序的請求,客戶程序不是通過名字來調用服務程序的,而是調用服務,客戶程序不知道處理它請求的服務程序的位置;
⑷.?服務程序調用tpreturn()函數來結束服務請求,并返回一個緩沖區,必要時,將它傳給客戶程序;
3.?客戶端和服務端程序通信的類型緩沖區
在Tuxedo系統中的所有通信過程都是通過類型緩沖區來完成的,Tuxedo系統提供了大量的類型緩沖區來供開發者使用。所有類型緩沖區都必須通過Tuxedo的tpalloc(),?tprealloc(),?tpfree()這些ATMI來分配回收,它們都有特定的頭部。
統一定義的類型緩沖區可以使它們在跨越不同網絡、不同協議、不同CPU構架以及不同操作系統之間得到統一的處理,這就使得開發者在分布式計算環境中有效地避開了異構網絡和異構計算機系統帶來的差異,把精力集中在商業邏輯的開發上。
六、?使用TUXEDO的一個例子
在浙江的彩鈴業務中,業務的處理需要BOSS系統做一些相應的操作,而浙江的BOSS已全面的使用了TUXEDO中間件,所以我們就需要開發一個使用TUXEDO的客戶端程序UITUX來完成彩鈴業務的一些操作。
UITUX進程主要通過socket與IIP通信得到IIP的命令請求,然后根據此命令向TUXEDO進行一次服務調用,得到BOSS的應答后,再轉換為與IIP通信的格式通過socket將應答發送給IIP。
因為每次命令都是由呼叫產生的,所以就需要系統有比較好的性能。為了實現比較高的吞吐量,UITUX進程中與TUXEDO的交互,使用了異步通訊,此處就是通過函數tpacall()和tpgetrply()實現。在調用tpacall()成功后,將返回一個非負描述符,此描述符能夠唯一的標識此次操作。而在tpgetrply()得到BOSS的應答時,通過指定的參數,可得到應答的非負描述符,此描述符與此命令在tpacall()時得到的描述符相同,這就使異步通訊得以完成。
| ? | |
| ? | ? |
UITUX進程的流程如下圖所示。
? 評論這張 轉發至微博 轉發至微博 閱讀(9637)| 評論(1) ? 中間件 ? 300萬大學生就業難,專家建議應屆生關注求職“藍海”歷史上的今天
- 為什么讀博“經常”是一種時間的浪費2014-08-22 09:19:09
- 調查稱大學生平均面試8.4家企業可獲一份工作2014-08-22 02:04:07
- 隱士2014-08-22 01:26:22
總結
以上是生活随笔為你收集整理的TUXEDO中间件介绍及应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React开发(114):不建议用set
- 下一篇: 隐马尔可夫模型(HMM)及Viterbi