【Tuxedo】Tuxedo入门
一、Tuxedo是什么
Tuxedo:Transaction for Unix has been Extended for Distributed Operation分布式操作擴(kuò)展之后的Unix事務(wù)系統(tǒng)。
Tuxedo是一個客戶機(jī)/服務(wù)器的中間件產(chǎn)品,它在客戶機(jī)和服務(wù)器之間進(jìn)行調(diào)節(jié),以保證正確的處理事務(wù),用C語言開發(fā)的,有很高的性能。廣泛應(yīng)用于電信、金融等領(lǐng)域。
TUXEDO是在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ā)人員能夠用它建立跨多個硬件平臺、數(shù)據(jù)庫和操作系統(tǒng)的可互操作的應(yīng)用系統(tǒng)。
Tuxedo的主要作用:屏蔽分布式環(huán)境中各種通信協(xié)議、硬件體系結(jié)構(gòu)、操作系統(tǒng)、數(shù)據(jù)庫和其它應(yīng)用服務(wù)等方面的差異,使分布于網(wǎng)絡(luò)節(jié)點(diǎn)上的應(yīng)用程序的各個單元部件之間能夠進(jìn)行互操作,并協(xié)調(diào)操作的一致性和完整性,最大限度地節(jié)省系統(tǒng)資源,提高系統(tǒng)性能。
二、使用Tuxedo中間件的三層架構(gòu)
三層架構(gòu)從左往右依次為客戶端層(表現(xiàn)層)、中間件服務(wù)層(業(yè)務(wù)邏輯層)、數(shù)據(jù)庫服務(wù)器層(數(shù)據(jù)層)。這種典型的三層架構(gòu)應(yīng)用非常廣泛。
對于使用weblogic中間件的系統(tǒng)一般應(yīng)用B/S架構(gòu),絕大部分采用HTTP協(xié)議,少量系統(tǒng)使用Java編寫的客戶端,使用的是RMI協(xié)議或者J2EE里的其他協(xié)議。而對于Tuxedo中間件使用的是Tuxedo協(xié)議。
三、Tuxedo的通訊過程
Tuxedo 服務(wù)器處理請求的方式與apache有本質(zhì)的區(qū)別。
Apache服務(wù)器處理請求,由客戶端發(fā)出請求到服務(wù)器,由服務(wù)器對請求進(jìn)行處理后將數(shù)據(jù)返回給客戶端。
Tuxedo 服務(wù)器一次請求需要兩次進(jìn)行兩次交互,Tuxedo有兩個負(fù)責(zé)通訊的進(jìn)程,一個為WSL,WSL的數(shù)量可以進(jìn)行配置,典型的配置一般兩、三個;WSH可以有N多個。客戶端通過IP地址和端口號與WSL建立連接,由WSL認(rèn)證請求是否合法,在WSL的響應(yīng)中包含了另外一個IP地址和端口號;然后,客戶端通過拿到的新的IP地址和端口號去請求WSH 。
客戶端程序由GUI 與 Tuxeo通訊兩部分組成,GUI部分主要由開發(fā)人員關(guān)心如何設(shè)計,通訊部分可能設(shè)計成幾個函數(shù)供開發(fā)人員調(diào)用。對于性能測試人員可能更關(guān)心客戶端與服務(wù)器之間的通訊過程。
四、Java調(diào)用Tuxedo的方案
Tuxedo為業(yè)界公認(rèn)的性能、穩(wěn)定性、健壯性都非常好的中間件之一,之所以能做到這么好的穩(wěn)定性和健壯性,其采用私有的通訊協(xié)議是原因之一。因為采用私有的通訊協(xié)議,所以客戶端與服務(wù)端的通訊質(zhì)量可以全部由Tuxedo保證,客戶端只需要調(diào)用Tuxedo的API即可。
但隨著現(xiàn)在開放平臺的不斷崛起和發(fā)展壯大,使用有別于傳統(tǒng)tpcall調(diào)用的方式來調(diào)用Tuxedo服務(wù)的需求越來越強(qiáng)烈,特別是通過Java調(diào)用Tuxedo服務(wù)的需求越來越普遍。
幸運(yùn)的是,Oracle公司在這些方面已做了不少工作。總體來講,通常可用于Java做客戶端調(diào)用Tuxedo服務(wù)的方式有如下幾種:WTC、Jolt、SALT、JNI。其它如JCA、/Q等通訊方式因使用較少故不予討論。
WTC
這是最常用的調(diào)用Tuxedo服務(wù)的方式之一,這種方式只能適用于客戶端使用WebLogic做服務(wù)器的情況,即只能在WebLogic內(nèi)部使用WTC服務(wù)。盡管有此限制,但WTC方式仍是目前使用最廣泛且最穩(wěn)定的非C調(diào)用Tuxedo的技術(shù)之一。
優(yōu)點(diǎn):穩(wěn)定、高效,客戶端調(diào)用簡單。
缺點(diǎn):必須在系統(tǒng)中增加WebLogic服務(wù)器,對于本身使用非WebLogic的應(yīng)用來說,采用這種方式等于是要在通訊層增加一個通訊節(jié)點(diǎn),而且WebLogic外面的客戶端只能通過Http協(xié)議或EJB等方式間接調(diào)用WTC及Tuxedo服務(wù)。
Jolt
Jolt是Oracle開發(fā)的專門用于實現(xiàn)Java調(diào)用Tuxedo服務(wù)的一種機(jī)制,Jolt分為客戶端和服務(wù)器端兩部分,Jolt服務(wù)器相當(dāng)于Tuxedo服務(wù)器的Java代理,負(fù)責(zé)與Jolt客戶端通訊并轉(zhuǎn)發(fā)請求到標(biāo)準(zhǔn)Tuxedo服務(wù)以及轉(zhuǎn)發(fā)應(yīng)答給Jolt客戶端。Jolt客戶端就是一組jar包,通訊客戶端程序調(diào)用Jolt包中的API實現(xiàn)與Tuxedo服務(wù)器的通訊。Jolt客戶端可以運(yùn)行于任何J2EE容器或純粹的JVM中。
優(yōu)點(diǎn):簡單,對客戶端侵入性小,客戶端只需要包含Jolt包即可。
缺點(diǎn):服務(wù)端必須專門配置Jolt服務(wù),另外Jolt并沒有包含在標(biāo)準(zhǔn)Tuxedo組件包中,需要另外購買。另據(jù)不可靠測試,Jolt性能不如WTC。
SALT
SALT是Oracle開發(fā)的將標(biāo)準(zhǔn)Tuxedo服務(wù)包裝成WebService服務(wù)的組件。SALT類似Jolt,也是在Tuxedo服務(wù)器端增加一個包裝層,實現(xiàn)SCA及WebService(SOAP/UDDI/WSDL)系列協(xié)議的處理。SALT也沒有包含在標(biāo)準(zhǔn)Tuxedo組件包中,需要單獨(dú)購買。
優(yōu)點(diǎn):客戶端無侵入性,不需要依賴于任何Tuxedo或Oracle的API及程序庫。
缺點(diǎn):客戶端必須具備WebService調(diào)用的能力,另外盡管WebService協(xié)議早已經(jīng)是標(biāo)準(zhǔn)協(xié)議,但不同平臺間WebService的互操作性問題仍需要實際應(yīng)用的檢驗,且這個問題不容樂觀。
JNI
JNI是Java標(biāo)準(zhǔn)規(guī)范中實現(xiàn)Java與本地動態(tài)庫互操作的接口。通過JNI,Java程序可以調(diào)用任何用C或其它語言編寫的本地動態(tài)庫中的函數(shù),當(dāng)然就可以使用JNI的方式實現(xiàn)對標(biāo)準(zhǔn)C語言編寫的tpcall的調(diào)用。
優(yōu)點(diǎn):投入最少,不需要安裝額外的組件。Java調(diào)用簡單,高效。
缺點(diǎn):穩(wěn)定性是本方案需要考慮的重點(diǎn),本地庫中的BUG可能導(dǎo)致整個JVM崩潰。必須對本地庫的異常處理及性能做大量嚴(yán)格測試,以減少出問題的可能。另外,從系統(tǒng)穩(wěn)定性及健壯方面考慮,客戶端應(yīng)該支持多JVM的負(fù)載均衡,以減少JVM崩潰導(dǎo)致的災(zāi)難性損失。
綜上所述,使用Java調(diào)用Tuxedo服務(wù)的方式有很多,每種方式都有各自的優(yōu)點(diǎn)和缺點(diǎn),實際使用中應(yīng)根據(jù)應(yīng)用的具體情況權(quán)衡選擇。
總結(jié)
以上是生活随笔為你收集整理的【Tuxedo】Tuxedo入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ![CDATA[ ]]
- 下一篇: Java读取多层级xml文件