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