Tuxedo高級(jí)培訓(xùn)_第1頁(yè)
Tuxedo高級(jí)培訓(xùn)_第2頁(yè)
Tuxedo高級(jí)培訓(xùn)_第3頁(yè)
Tuxedo高級(jí)培訓(xùn)_第4頁(yè)
Tuxedo高級(jí)培訓(xùn)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、束善杭2003年1月(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。2l2003,南京聯(lián)創(chuàng),版權(quán)所有。南京聯(lián)創(chuàng),版權(quán)所有。l你可以遵照你可以遵照GNU Free Documentation License拷貝、分發(fā)和修改本文檔,但是拷貝、分發(fā)和修改本文檔,但是所有拷貝、分發(fā)和修改版本都必須包含所有拷貝、分發(fā)和修改版本都必須包含以上版權(quán)聲明。以上版權(quán)聲明。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。3l體系結(jié)構(gòu)體系結(jié)構(gòu)l程序編程程序編程l系統(tǒng)管理系統(tǒng)管理l故障恢復(fù)故障恢復(fù)l其它其它(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。4l總控總控 VS 原子原子采用采用“總控原子總控原子”這樣的體系結(jié)構(gòu)。總控根據(jù)客這樣的體系結(jié)構(gòu)???/p>

2、控根據(jù)客戶端的交易編碼決定調(diào)用哪些原子服務(wù)戶端的交易編碼決定調(diào)用哪些原子服務(wù) 。總控服務(wù)負(fù)責(zé):必須輸入項(xiàng)的檢查、返回結(jié)果的統(tǒng)總控服務(wù)負(fù)責(zé):必須輸入項(xiàng)的檢查、返回結(jié)果的統(tǒng)一處理、事務(wù)控制、原子服務(wù)的邏輯組織。一處理、事務(wù)控制、原子服務(wù)的邏輯組織。原子服務(wù)只負(fù)責(zé)具體的某個(gè)簡(jiǎn)單的業(yè)務(wù)邏輯,不關(guān)原子服務(wù)只負(fù)責(zé)具體的某個(gè)簡(jiǎn)單的業(yè)務(wù)邏輯,不關(guān)心事務(wù)管理、業(yè)務(wù)邏輯的組織等。心事務(wù)管理、業(yè)務(wù)邏輯的組織等??偪赜捎诓贿B接數(shù)據(jù)庫(kù),無(wú)需配置路由。但原子服總控由于不連接數(shù)據(jù)庫(kù),無(wú)需配置路由。但原子服務(wù)由于需要連接到不同的數(shù)據(jù)庫(kù),需要配置到具體務(wù)由于需要連接到不同的數(shù)據(jù)庫(kù),需要配置到具體數(shù)據(jù)庫(kù)連接的路由。數(shù)據(jù)庫(kù)連接的路

3、由。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。5l事務(wù)控制事務(wù)控制總控服務(wù)控制事務(wù)的啟動(dòng)、提交和回滾;總控服務(wù)控制事務(wù)的啟動(dòng)、提交和回滾;一個(gè)交易編碼對(duì)應(yīng)的多個(gè)原子服務(wù),可分別一個(gè)交易編碼對(duì)應(yīng)的多個(gè)原子服務(wù),可分別連接到不同的數(shù)據(jù)庫(kù),實(shí)現(xiàn)跨用戶、跨數(shù)據(jù)連接到不同的數(shù)據(jù)庫(kù),實(shí)現(xiàn)跨用戶、跨數(shù)據(jù)庫(kù)、跨實(shí)例的交易;庫(kù)、跨實(shí)例的交易;通過(guò)這樣的分布式事務(wù),中間層統(tǒng)一實(shí)現(xiàn)多通過(guò)這樣的分布式事務(wù),中間層統(tǒng)一實(shí)現(xiàn)多庫(kù)的數(shù)據(jù)同步提交庫(kù)的數(shù)據(jù)同步提交/回滾(比如:繳費(fèi)卡系回滾(比如:繳費(fèi)卡系統(tǒng)與營(yíng)帳系統(tǒng)由兩個(gè)開(kāi)發(fā)商開(kāi)發(fā)時(shí),可以采統(tǒng)與營(yíng)帳系統(tǒng)由兩個(gè)開(kāi)發(fā)商開(kāi)發(fā)時(shí),可以采用這種方式);用這種方式);(c)2003,南京聯(lián)創(chuàng),

4、版權(quán)所有。6l交易編碼交易編碼 VS 原子服務(wù)原子服務(wù)總控服務(wù)通過(guò)交易編碼識(shí)別出不同的業(yè)務(wù)邏總控服務(wù)通過(guò)交易編碼識(shí)別出不同的業(yè)務(wù)邏輯,然后將不同的原子服務(wù)組裝成完整的業(yè)輯,然后將不同的原子服務(wù)組裝成完整的業(yè)務(wù)過(guò)程。務(wù)過(guò)程。交易編碼代表一個(gè)完整的交易,但原子服務(wù)交易編碼代表一個(gè)完整的交易,但原子服務(wù)僅負(fù)責(zé)一個(gè)簡(jiǎn)單的原子業(yè)務(wù)功能。僅負(fù)責(zé)一個(gè)簡(jiǎn)單的原子業(yè)務(wù)功能。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。7l一個(gè)服務(wù)一個(gè)文件一個(gè)服務(wù)一個(gè)文件對(duì)于對(duì)于tuxedo的進(jìn)程,可以在一個(gè)源代碼文件中包含的進(jìn)程,可以在一個(gè)源代碼文件中包含多個(gè)服務(wù)函數(shù),即服務(wù)。但這是一種不靈活的結(jié)構(gòu)。多個(gè)服務(wù)函數(shù),即服務(wù)。但這是一種不靈

5、活的結(jié)構(gòu)。最靈活的結(jié)構(gòu),應(yīng)該是:每個(gè)服務(wù)函數(shù)一個(gè)源代碼最靈活的結(jié)構(gòu),應(yīng)該是:每個(gè)服務(wù)函數(shù)一個(gè)源代碼文件,然后通過(guò)文件,然后通過(guò)makefile文件將這些文件連接起來(lái),文件將這些文件連接起來(lái),按需要組合成適當(dāng)?shù)倪M(jìn)程。按需要組合成適當(dāng)?shù)倪M(jìn)程。這樣做的一個(gè)巨大好處是:當(dāng)發(fā)現(xiàn)需要調(diào)整服務(wù)在這樣做的一個(gè)巨大好處是:當(dāng)發(fā)現(xiàn)需要調(diào)整服務(wù)在進(jìn)程間的分布關(guān)系時(shí),可以簡(jiǎn)單的通過(guò)修改進(jìn)程間的分布關(guān)系時(shí),可以簡(jiǎn)單的通過(guò)修改makefile文件達(dá)到效果文件達(dá)到效果即可配置的服務(wù)分布。即可配置的服務(wù)分布。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。8l進(jìn)程的服務(wù)分布進(jìn)程的服務(wù)分布對(duì)于服務(wù)具體如何在進(jìn)程間分布,需要考慮幾個(gè)重對(duì)于服

6、務(wù)具體如何在進(jìn)程間分布,需要考慮幾個(gè)重要因素。要因素。重要因素一:一個(gè)原子服務(wù)進(jìn)程占一個(gè)數(shù)據(jù)庫(kù)連接,重要因素一:一個(gè)原子服務(wù)進(jìn)程占一個(gè)數(shù)據(jù)庫(kù)連接,這個(gè)連接既不能太閑,也不能太忙;這個(gè)連接既不能太閑,也不能太忙;重要因素二:一個(gè)原子服務(wù)進(jìn)程中如果有一個(gè)服務(wù)重要因素二:一個(gè)原子服務(wù)進(jìn)程中如果有一個(gè)服務(wù)執(zhí)行的時(shí)間很長(zhǎng),可能會(huì)導(dǎo)致其它所有服務(wù)在這個(gè)執(zhí)行的時(shí)間很長(zhǎng),可能會(huì)導(dǎo)致其它所有服務(wù)在這個(gè)服務(wù)運(yùn)行時(shí)無(wú)法使用。所以,如果一個(gè)不常用的查服務(wù)運(yùn)行時(shí)無(wú)法使用。所以,如果一個(gè)不常用的查詢服務(wù)和常用的營(yíng)業(yè)服務(wù)在一個(gè)進(jìn)程中,就會(huì)有這詢服務(wù)和常用的營(yíng)業(yè)服務(wù)在一個(gè)進(jìn)程中,就會(huì)有這個(gè)問(wèn)題。個(gè)問(wèn)題。(c)2003,南京聯(lián)

7、創(chuàng),版權(quán)所有。9l數(shù)據(jù)庫(kù)按地州劃分?jǐn)?shù)據(jù)庫(kù)按地州劃分BOSS系統(tǒng)采用每個(gè)地州一個(gè)數(shù)據(jù)庫(kù)(一個(gè)系統(tǒng)采用每個(gè)地州一個(gè)數(shù)據(jù)庫(kù)(一個(gè)用戶)的方式。用戶)的方式。這種方式的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,很多問(wèn)題考慮這種方式的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,很多問(wèn)題考慮時(shí)要容易得多。時(shí)要容易得多。但缺點(diǎn)是中間件會(huì)對(duì)每個(gè)地州建立完全相同但缺點(diǎn)是中間件會(huì)對(duì)每個(gè)地州建立完全相同數(shù)目的數(shù)據(jù)庫(kù)連接,對(duì)于小地州造成大量的數(shù)目的數(shù)據(jù)庫(kù)連接,對(duì)于小地州造成大量的連接資源浪費(fèi)。連接資源浪費(fèi)。具體如何劃分,可以將上述的因素作為考慮。具體如何劃分,可以將上述的因素作為考慮。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。10l采用中間件的其它考慮采用中間件的其它考慮三層

8、結(jié)構(gòu)不一定會(huì)降低連接數(shù);三層結(jié)構(gòu)不一定會(huì)降低連接數(shù);終端數(shù)目到一定后,才會(huì)有效果;終端數(shù)目到一定后,才會(huì)有效果;不采用中間件,難以實(shí)現(xiàn)跨庫(kù)的交易;不采用中間件,難以實(shí)現(xiàn)跨庫(kù)的交易;采用中間件采用中間件采用兩層結(jié)構(gòu)采用兩層結(jié)構(gòu)終端數(shù)連接數(shù)(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。11l邏輯:數(shù)據(jù)庫(kù)邏輯:數(shù)據(jù)庫(kù) VS 中間件中間件將業(yè)務(wù)邏輯放在中間件還是數(shù)據(jù)實(shí)現(xiàn)需要考慮兩個(gè)將業(yè)務(wù)邏輯放在中間件還是數(shù)據(jù)實(shí)現(xiàn)需要考慮兩個(gè)主要因素。主要因素。一個(gè)主要因素是:數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程難以實(shí)現(xiàn)面向?qū)σ粋€(gè)主要因素是:數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程難以實(shí)現(xiàn)面向?qū)ο蟮姆庋b,難以實(shí)現(xiàn)邏輯的抽象、繼承和多態(tài)。象的封裝,難以實(shí)現(xiàn)邏輯的抽象、繼承和多態(tài)

9、。另一個(gè)主要因素是:大部分需要和數(shù)據(jù)庫(kù)交互的邏另一個(gè)主要因素是:大部分需要和數(shù)據(jù)庫(kù)交互的邏輯,基本上都是數(shù)據(jù)操作而不是科學(xué)計(jì)算。這樣的輯,基本上都是數(shù)據(jù)操作而不是科學(xué)計(jì)算。這樣的數(shù)據(jù)操作,由存儲(chǔ)過(guò)程一次性集中處理比一個(gè)一個(gè)數(shù)據(jù)操作,由存儲(chǔ)過(guò)程一次性集中處理比一個(gè)一個(gè)的零碎的的零碎的SQL片斷效率高得多,而且給數(shù)據(jù)庫(kù)帶來(lái)片斷效率高得多,而且給數(shù)據(jù)庫(kù)帶來(lái)的性能壓力也小得多。的性能壓力也小得多。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。12lC vs C+采用采用C+編程,務(wù)必考慮編程,務(wù)必考慮tuxedo的的tpreturn函數(shù)給函數(shù)給C+對(duì)象析構(gòu)帶來(lái)的對(duì)象析構(gòu)帶來(lái)的BUG。建議采用建議采用C+的類來(lái)封

10、裝具體的業(yè)務(wù)邏輯。的類來(lái)封裝具體的業(yè)務(wù)邏輯。在服務(wù)函數(shù)中僅通過(guò)簡(jiǎn)單的調(diào)用在服務(wù)函數(shù)中僅通過(guò)簡(jiǎn)單的調(diào)用C+對(duì)象方對(duì)象方法來(lái)實(shí)現(xiàn)具體的業(yè)務(wù)操作。法來(lái)實(shí)現(xiàn)具體的業(yè)務(wù)操作。C+中中tpreturn問(wèn)題的解決,見(jiàn)備注。問(wèn)題的解決,見(jiàn)備注。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。13l內(nèi)存泄漏問(wèn)題內(nèi)存泄漏問(wèn)題一個(gè)主要方面,就是前面的一個(gè)主要方面,就是前面的C+中中tpreturn問(wèn)題。問(wèn)題。另一個(gè)主要方面,是另一個(gè)主要方面,是Tuxedo的內(nèi)存管理機(jī)制。務(wù)的內(nèi)存管理機(jī)制。務(wù)必要注意:必要注意: 服務(wù)進(jìn)入時(shí),輸入?yún)?shù)(服務(wù)進(jìn)入時(shí),輸入?yún)?shù)(TPSVCINFO *類型)結(jié)構(gòu)的類型)結(jié)構(gòu)的data成員所指向的內(nèi)存,

11、和成員所指向的內(nèi)存,和tpreturn所返回的內(nèi)存,是所返回的內(nèi)存,是tuxedo自動(dòng)釋放的。自動(dòng)釋放的。 但除此之外,所有其它分配的內(nèi)存(包括但除此之外,所有其它分配的內(nèi)存(包括tpalloc/malloc/new分配的內(nèi)存,分配的內(nèi)存, 都必須自行釋放)都必須自行釋放).(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。14lcore dump問(wèn)題問(wèn)題產(chǎn)生產(chǎn)生core dump的問(wèn)題,除了常規(guī)的的問(wèn)題,除了常規(guī)的c/c+編程中編程中需要注意的數(shù)組越界、內(nèi)存指針?lè)欠ú僮魍?,還需需要注意的數(shù)組越界、內(nèi)存指針?lè)欠ú僮魍?,還需要特別注意要特別注意tuxedo本身的問(wèn)題。本身的問(wèn)題。在調(diào)用在調(diào)用tuxedo的的A

12、PI函數(shù),如函數(shù),如tpcall/ tpreturn/ Fget等時(shí),請(qǐng)一定要保證數(shù)據(jù)類型與其頭文件中定等時(shí),請(qǐng)一定要保證數(shù)據(jù)類型與其頭文件中定義的一模一樣。如,義的一模一樣。如,long型的參數(shù),傳遞型的參數(shù),傳遞0L而不時(shí)而不時(shí)簡(jiǎn)單的簡(jiǎn)單的0。這樣可避免許多無(wú)謂的時(shí)間浪費(fèi)。這樣可避免許多無(wú)謂的時(shí)間浪費(fèi)。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。15l交易編碼的對(duì)原子服務(wù)的轉(zhuǎn)換交易編碼的對(duì)原子服務(wù)的轉(zhuǎn)換在在BOSS系統(tǒng)開(kāi)發(fā)中,一個(gè)比較系統(tǒng)開(kāi)發(fā)中,一個(gè)比較“笨笨”的編程風(fēng)格的編程風(fēng)格是:總控服務(wù)根據(jù)交易編碼調(diào)用對(duì)應(yīng)的原子服務(wù)時(shí),是:總控服務(wù)根據(jù)交易編碼調(diào)用對(duì)應(yīng)的原子服務(wù)時(shí),采用采用if交易編碼等于某

13、個(gè)常量字符串,就交易編碼等于某個(gè)常量字符串,就tpcall某幾某幾個(gè)原子服務(wù)的個(gè)原子服務(wù)的“靜態(tài)靜態(tài)”方式實(shí)現(xiàn)。當(dāng)需要增加交易方式實(shí)現(xiàn)。當(dāng)需要增加交易編碼時(shí),就在總控服務(wù)中增加一段編碼時(shí),就在總控服務(wù)中增加一段if的判斷。的判斷。這種方式,完全可以修改為用配置文件來(lái)動(dòng)態(tài)配置這種方式,完全可以修改為用配置文件來(lái)動(dòng)態(tài)配置交易編碼與原子服務(wù)之間對(duì)應(yīng)關(guān)系的方式來(lái)實(shí)現(xiàn)。交易編碼與原子服務(wù)之間對(duì)應(yīng)關(guān)系的方式來(lái)實(shí)現(xiàn)。在具體設(shè)計(jì)配置文件格式時(shí),需要考慮如下因素:在具體設(shè)計(jì)配置文件格式時(shí),需要考慮如下因素: 一個(gè)交易編碼字符串必須允許對(duì)應(yīng)多個(gè)原子服務(wù)。一個(gè)交易編碼字符串必須允許對(duì)應(yīng)多個(gè)原子服務(wù)。 多個(gè)原子服務(wù)之

14、間可以串聯(lián)(前一個(gè)原子服務(wù)的輸出,作多個(gè)原子服務(wù)之間可以串聯(lián)(前一個(gè)原子服務(wù)的輸出,作為后一個(gè)的輸入),也可以并聯(lián)為后一個(gè)的輸入),也可以并聯(lián)。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。16lAPI函數(shù)封裝成公共函數(shù)函數(shù)封裝成公共函數(shù)對(duì)于常用的對(duì)于常用的API函數(shù),包括:函數(shù),包括: fml緩存操作緩存操作Fget/Fchg/ Fappend/Findex,數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)操作的相關(guān)錯(cuò)誤處理,以及其它錯(cuò)誤處理,建議的相關(guān)錯(cuò)誤處理,以及其它錯(cuò)誤處理,建議采用公共函數(shù)進(jìn)行封裝。采用公共函數(shù)進(jìn)行封裝。封裝的主要目的,是為了:封裝的主要目的,是為了: 采用統(tǒng)一的方式進(jìn)行處理錯(cuò)誤編碼和錯(cuò)誤信息,采用統(tǒng)一的方式

15、進(jìn)行處理錯(cuò)誤編碼和錯(cuò)誤信息,并在并在FML緩存中統(tǒng)一返回到客戶端。緩存中統(tǒng)一返回到客戶端。 簡(jiǎn)化應(yīng)用編程,在具體編程時(shí)直接調(diào)用這些公共簡(jiǎn)化應(yīng)用編程,在具體編程時(shí)直接調(diào)用這些公共函數(shù)實(shí)現(xiàn)需要的函數(shù)實(shí)現(xiàn)需要的API調(diào)用。調(diào)用。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。17l前臺(tái)、中間件日志打印前臺(tái)、中間件日志打印tuxedo服務(wù)的調(diào)測(cè),是個(gè)很麻煩的工作。服務(wù)的調(diào)測(cè),是個(gè)很麻煩的工作。為了提高調(diào)試、查錯(cuò)的效率,建議在前臺(tái)軟為了提高調(diào)試、查錯(cuò)的效率,建議在前臺(tái)軟件、中間件服務(wù)段,都打印相關(guān)的日志信息。件、中間件服務(wù)段,都打印相關(guān)的日志信息。這些日志信息的打印,具體如何實(shí)現(xiàn),應(yīng)該這些日志信息的打印,具體如何實(shí)

16、現(xiàn),應(yīng)該考慮在程序發(fā)布時(shí)能夠方便的關(guān)閉,并在出考慮在程序發(fā)布時(shí)能夠方便的關(guān)閉,并在出現(xiàn)在線運(yùn)行異常錯(cuò)誤時(shí)又能過(guò)方便的針對(duì)個(gè)現(xiàn)在線運(yùn)行異常錯(cuò)誤時(shí)又能過(guò)方便的針對(duì)個(gè)別服務(wù)打開(kāi)。別服務(wù)打開(kāi)。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。18l編譯環(huán)境編譯環(huán)境中間件服務(wù)器,建議建立方便、靈活的編譯中間件服務(wù)器,建議建立方便、靈活的編譯環(huán)境,以便遷移、重新編譯等管理工作。環(huán)境,以便遷移、重新編譯等管理工作。一種可參考的設(shè)計(jì)目標(biāo)是:利用一種可參考的設(shè)計(jì)目標(biāo)是:利用makefile,使得每個(gè)目錄、每個(gè)目錄下的文件,即可以使得每個(gè)目錄、每個(gè)目錄下的文件,即可以單獨(dú)編譯某個(gè)進(jìn)程,也可以一次性迭代編譯單獨(dú)編譯某個(gè)進(jìn)程,也可

17、以一次性迭代編譯整個(gè)目錄下(包括子目錄)的所有服務(wù)進(jìn)程。整個(gè)目錄下(包括子目錄)的所有服務(wù)進(jìn)程。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。19l分布式事務(wù)、分布式事務(wù)、DBLINK對(duì)于分布式事務(wù),直接使用對(duì)于分布式事務(wù),直接使用tuxedo支持的支持的XA協(xié)議。當(dāng)然,一個(gè)原子服務(wù)進(jìn)程只能連協(xié)議。當(dāng)然,一個(gè)原子服務(wù)進(jìn)程只能連接到一個(gè)庫(kù)。但總控服務(wù)可以接到一個(gè)庫(kù)。但總控服務(wù)可以tpcall幾個(gè)連幾個(gè)連接到不同數(shù)據(jù)庫(kù)的原子服務(wù)。接到不同數(shù)據(jù)庫(kù)的原子服務(wù)。不要在原子服務(wù)中使用不要在原子服務(wù)中使用oracle的的DBLINK進(jìn)進(jìn)行跨庫(kù)操作,這會(huì)一起不必要的問(wèn)題和麻煩。行跨庫(kù)操作,這會(huì)一起不必要的問(wèn)題和麻煩。(

18、c)2003,南京聯(lián)創(chuàng),版權(quán)所有。20l前臺(tái)開(kāi)發(fā)前臺(tái)開(kāi)發(fā)前臺(tái)開(kāi)發(fā)時(shí),建議將前臺(tái)開(kāi)發(fā)時(shí),建議將Tuxedo相關(guān)的調(diào)用操相關(guān)的調(diào)用操作封裝成可直接使用的控件。作封裝成可直接使用的控件。封裝前臺(tái)控件時(shí),建議采用封裝前臺(tái)控件時(shí),建議采用“連接層封裝連接層封裝服務(wù)層封裝數(shù)據(jù)結(jié)果集層封裝服務(wù)層封裝數(shù)據(jù)結(jié)果集層封裝”的三層封的三層封裝模式。具體解釋見(jiàn)備注。裝模式。具體解釋見(jiàn)備注。具體設(shè)計(jì)時(shí),建議參考具體設(shè)計(jì)時(shí),建議參考Tuxedo自身所帶的自身所帶的Jolt類體系設(shè)計(jì)模式。類體系設(shè)計(jì)模式。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。21l其它經(jīng)驗(yàn)其它經(jīng)驗(yàn)Tuxedo消息隊(duì)列名稱長(zhǎng)度,建議不要超過(guò)消息隊(duì)列名稱長(zhǎng)度,建

19、議不要超過(guò)11位。因?yàn)槲?。因?yàn)門(mén)uxedo的管理控制程序的管理控制程序tmadmin只能顯示只能顯示12位長(zhǎng)度。留位長(zhǎng)度。留1位應(yīng)急使位應(yīng)急使用,但平時(shí)不要超過(guò)用,但平時(shí)不要超過(guò)11位。位。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。22l超時(shí)設(shè)置超時(shí)設(shè)置 tuxedo有三個(gè)超時(shí)設(shè)置:有三個(gè)超時(shí)設(shè)置:tpbegain時(shí)的時(shí)的事務(wù)超時(shí)、建立數(shù)據(jù)庫(kù)連接事務(wù)超時(shí)、建立數(shù)據(jù)庫(kù)連接時(shí)時(shí)openinfo中的中的SesTm超時(shí)設(shè)置、系統(tǒng)設(shè)置的全局服務(wù)調(diào)用超時(shí)。超時(shí)設(shè)置、系統(tǒng)設(shè)置的全局服務(wù)調(diào)用超時(shí)。 tpbegain的超時(shí)表示:從啟動(dòng)事務(wù)那一刻起,的超時(shí)表示:從啟動(dòng)事務(wù)那一刻起, tuxedo作為事務(wù)協(xié)調(diào)作為事務(wù)協(xié)調(diào)

20、者判斷如果超過(guò)時(shí)間,還沒(méi)有調(diào)用者判斷如果超過(guò)時(shí)間,還沒(méi)有調(diào)用tpcommit/tprollback結(jié)束事務(wù),結(jié)束事務(wù),則自動(dòng)進(jìn)行全局事務(wù)回滾(向所有事務(wù)參與者發(fā)出回滾通知)。則自動(dòng)進(jìn)行全局事務(wù)回滾(向所有事務(wù)參與者發(fā)出回滾通知)。 openinfo的超時(shí)表示:數(shù)據(jù)庫(kù)判斷,自身作為事務(wù)參與者,如果多的超時(shí)表示:數(shù)據(jù)庫(kù)判斷,自身作為事務(wù)參與者,如果多長(zhǎng)時(shí)間中間件沒(méi)有和自身發(fā)生交互,則自動(dòng)回滾本庫(kù)的事務(wù),但與長(zhǎng)時(shí)間中間件沒(méi)有和自身發(fā)生交互,則自動(dòng)回滾本庫(kù)的事務(wù),但與其它事務(wù)參與者是否回滾無(wú)關(guān)。其它事務(wù)參與者是否回滾無(wú)關(guān)。 系統(tǒng)全局超時(shí)設(shè)置:系統(tǒng)全局超時(shí)設(shè)置:SCANUNITBLOCKTIME表示消息

21、隊(duì)列中的表示消息隊(duì)列中的請(qǐng)求最多可以被堵塞多長(zhǎng)時(shí)間。如果超過(guò)這個(gè)時(shí)間,發(fā)出請(qǐng)求的客請(qǐng)求最多可以被堵塞多長(zhǎng)時(shí)間。如果超過(guò)這個(gè)時(shí)間,發(fā)出請(qǐng)求的客戶端(包括終端和總控服務(wù))將收到服務(wù)超時(shí)的錯(cuò)誤信息。戶端(包括終端和總控服務(wù))將收到服務(wù)超時(shí)的錯(cuò)誤信息。 這這3個(gè)時(shí)間的設(shè)置,建議關(guān)系是:個(gè)時(shí)間的設(shè)置,建議關(guān)系是:openinfo=tpbegin修改修改-check in。當(dāng)需要于在線系統(tǒng)中增加、刪除服務(wù)時(shí),采用當(dāng)需要于在線系統(tǒng)中增加、刪除服務(wù)時(shí),采用tmconfig命令動(dòng)態(tài)修改命令動(dòng)態(tài)修改ubb配置。但在配置完成后,配置。但在配置完成后,務(wù)必同步修改靜態(tài)的務(wù)必同步修改靜態(tài)的ubb配置文件。切切不可疏忽!

22、配置文件。切切不可疏忽!(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。24l中間件目錄規(guī)劃中間件目錄規(guī)劃各省中間層配置結(jié)構(gòu),目錄規(guī)劃,要統(tǒng)一,各省中間層配置結(jié)構(gòu),目錄規(guī)劃,要統(tǒng)一,便于不同人員都可以進(jìn)行維護(hù)。便于不同人員都可以進(jìn)行維護(hù)。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。25l消息隊(duì)列監(jiān)控消息隊(duì)列監(jiān)控對(duì)于在線系統(tǒng),必須定期、及時(shí)的監(jiān)控消息隊(duì)列的對(duì)于在線系統(tǒng),必須定期、及時(shí)的監(jiān)控消息隊(duì)列的堵塞情況。堵塞情況。一旦發(fā)生原子服務(wù)的小心隊(duì)列堵塞,將造成大量的一旦發(fā)生原子服務(wù)的小心隊(duì)列堵塞,將造成大量的總控服務(wù)消息隊(duì)列堵塞??偪胤?wù)消息隊(duì)列堵塞。一旦發(fā)生消息隊(duì)列的堵塞,立即重新啟動(dòng)原子服務(wù),一旦發(fā)生消息隊(duì)列的堵塞

23、,立即重新啟動(dòng)原子服務(wù),并迅速查找產(chǎn)生堵塞的原因并迅速查找產(chǎn)生堵塞的原因一般情況下,均是一般情況下,均是某個(gè)服務(wù)的某個(gè)服務(wù)的sql語(yǔ)句效率過(guò)低,導(dǎo)致響應(yīng)速度過(guò)慢。語(yǔ)句效率過(guò)低,導(dǎo)致響應(yīng)速度過(guò)慢。從而導(dǎo)致這個(gè)服務(wù)進(jìn)程消息隊(duì)列堵塞。從而導(dǎo)致這個(gè)服務(wù)進(jìn)程消息隊(duì)列堵塞。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。26lMP模式網(wǎng)絡(luò)監(jiān)控模式網(wǎng)絡(luò)監(jiān)控對(duì)于對(duì)于MP模式(大部門(mén)情況下,考慮外部接口的前模式(大部門(mén)情況下,考慮外部接口的前置機(jī)),均會(huì)考慮將置機(jī)),均會(huì)考慮將Tuxedo配置成配置成MP模式。模式。對(duì)于對(duì)于MP模式,由于模式,由于Tuxedo有有partition的的BUG,要要及時(shí)、定期的用及時(shí)、定期的

24、用pnw命令檢測(cè)多臺(tái)機(jī)器之間的命令檢測(cè)多臺(tái)機(jī)器之間的Tuxedo連接信息是否斷開(kāi)。連接信息是否斷開(kāi)。一旦發(fā)生一旦發(fā)生tuxedo的網(wǎng)絡(luò)問(wèn)題(的網(wǎng)絡(luò)問(wèn)題(partition問(wèn)題),要問(wèn)題),要盡量做到第一時(shí)間發(fā)現(xiàn)、第一時(shí)間恢復(fù)(通過(guò)動(dòng)態(tài)盡量做到第一時(shí)間發(fā)現(xiàn)、第一時(shí)間恢復(fù)(通過(guò)動(dòng)態(tài)遷移)。否則,等到前臺(tái)發(fā)現(xiàn)功能不能使用時(shí),再遷移)。否則,等到前臺(tái)發(fā)現(xiàn)功能不能使用時(shí),再進(jìn)行處理,一般都為時(shí)過(guò)晚,只能重新啟動(dòng)整個(gè)中進(jìn)行處理,一般都為時(shí)過(guò)晚,只能重新啟動(dòng)整個(gè)中間件了。間件了。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。27lULOG監(jiān)控監(jiān)控在系統(tǒng)監(jiān)控方面,另一個(gè)比較重要的內(nèi)容,就是定在系統(tǒng)監(jiān)控方面,另一個(gè)比較重

25、要的內(nèi)容,就是定期、及時(shí)的監(jiān)控期、及時(shí)的監(jiān)控ULOG文件。文件。一旦發(fā)現(xiàn)一旦發(fā)現(xiàn)ULOG中產(chǎn)生大量的異常信息(產(chǎn)生日志中產(chǎn)生大量的異常信息(產(chǎn)生日志的速度猛的增加),一般都是系統(tǒng)異常的準(zhǔn)確反饋。的速度猛的增加),一般都是系統(tǒng)異常的準(zhǔn)確反饋。系統(tǒng)剛上線期間,通過(guò)每日定時(shí)監(jiān)控系統(tǒng)剛上線期間,通過(guò)每日定時(shí)監(jiān)控ULOG日志,日志,可以及時(shí)發(fā)現(xiàn)許多應(yīng)用系統(tǒng)本身的許多問(wèn)題,為系可以及時(shí)發(fā)現(xiàn)許多應(yīng)用系統(tǒng)本身的許多問(wèn)題,為系統(tǒng)的完善、優(yōu)化起到很大指導(dǎo)作用。統(tǒng)的完善、優(yōu)化起到很大指導(dǎo)作用。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。28l平臺(tái)問(wèn)題平臺(tái)問(wèn)題 Tuxedo 存在平臺(tái)問(wèn)題:在不同的平臺(tái)下,其性能是有存在平臺(tái)問(wèn)

26、題:在不同的平臺(tái)下,其性能是有區(qū)別的。區(qū)別的。 特別的,對(duì)于特別的,對(duì)于SunOS,Tuxedo表現(xiàn)的最不穩(wěn)定。即使表現(xiàn)的最不穩(wěn)定。即使使用最普遍的使用最普遍的tmadmin命令,也可能導(dǎo)致整個(gè)中間件的命令,也可能導(dǎo)致整個(gè)中間件的崩潰。崩潰。 對(duì)于對(duì)于tmshutdown命令來(lái)說(shuō),在命令來(lái)說(shuō),在SunOS下下白天中間件忙白天中間件忙碌的時(shí)候,哪怕使用一次,也極有可能導(dǎo)致整個(gè)中間件碌的時(shí)候,哪怕使用一次,也極有可能導(dǎo)致整個(gè)中間件崩潰。崩潰。 所以,對(duì)于中間件來(lái)說(shuō),為了保證系統(tǒng)的穩(wěn)定性。建議所以,對(duì)于中間件來(lái)說(shuō),為了保證系統(tǒng)的穩(wěn)定性。建議白天時(shí)間,不要做任何啟停服務(wù)、動(dòng)態(tài)配置、系統(tǒng)清理白天時(shí)間,不

27、要做任何啟停服務(wù)、動(dòng)態(tài)配置、系統(tǒng)清理等修改性的動(dòng)作。等修改性的動(dòng)作。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。29l操作系統(tǒng)監(jiān)控操作系統(tǒng)監(jiān)控對(duì)于中間件來(lái)說(shuō),另一個(gè)重要的監(jiān)控,就是對(duì)于中間件來(lái)說(shuō),另一個(gè)重要的監(jiān)控,就是操作系統(tǒng)的監(jiān)控。操作系統(tǒng)的監(jiān)控。操作系統(tǒng)方面容易一起中間件崩潰的,就是操作系統(tǒng)方面容易一起中間件崩潰的,就是內(nèi)存和內(nèi)存和swap區(qū)區(qū)的耗盡。的耗盡。其它可能的問(wèn)題,就是分配給其它可能的問(wèn)題,就是分配給tuxedo用戶用戶的進(jìn)程數(shù)目、磁盤(pán)空間、的進(jìn)程數(shù)目、磁盤(pán)空間、IPC等資源的短缺。等資源的短缺。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。30lWEB監(jiān)控界面監(jiān)控界面tuxedo提供提供web監(jiān)

28、控圖形界面,可用來(lái)進(jìn)監(jiān)控圖形界面,可用來(lái)進(jìn)行行tuxedo本身的監(jiān)控(包括消息隊(duì)列、網(wǎng)本身的監(jiān)控(包括消息隊(duì)列、網(wǎng)絡(luò)連接等通過(guò)絡(luò)連接等通過(guò)tmadmin監(jiān)控到的所有信息)。監(jiān)控到的所有信息)。通過(guò)圖形界面,還可以進(jìn)行動(dòng)態(tài)配置。通過(guò)圖形界面,還可以進(jìn)行動(dòng)態(tài)配置。但使用但使用web界面,需要考慮其對(duì)中間件服務(wù)界面,需要考慮其對(duì)中間件服務(wù)器性能的消耗。器性能的消耗。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。31ltpadmcall API接口接口可以通過(guò)調(diào)用可以通過(guò)調(diào)用tpadmcall API函數(shù),獲得函數(shù),獲得tuxedo的的 MIB 信息,從而實(shí)現(xiàn)支持信息,從而實(shí)現(xiàn)支持SNMP協(xié)議的系統(tǒng)監(jiān)控。協(xié)議的

29、系統(tǒng)監(jiān)控。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。32l“事務(wù)已重算事務(wù)已重算”這個(gè)錯(cuò)誤,是這個(gè)錯(cuò)誤,是oracle中文版的報(bào)錯(cuò)。英文版中文版的報(bào)錯(cuò)。英文版的錯(cuò)誤信息,應(yīng)該是類似于的錯(cuò)誤信息,應(yīng)該是類似于“transaction had been rollbacked”的信息。即事務(wù)已經(jīng)的信息。即事務(wù)已經(jīng)被回滾的意思。被回滾的意思。發(fā)生這個(gè)錯(cuò)誤,都是中間件與數(shù)據(jù)庫(kù)的連接發(fā)生這個(gè)錯(cuò)誤,都是中間件與數(shù)據(jù)庫(kù)的連接異常,只有重新啟動(dòng)相應(yīng)的服務(wù)。異常,只有重新啟動(dòng)相應(yīng)的服務(wù)。故障原因,一般都是網(wǎng)絡(luò)異常、數(shù)據(jù)庫(kù)故障原因,一般都是網(wǎng)絡(luò)異常、數(shù)據(jù)庫(kù)BUG造成的。造成的。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。33lT

30、MS_ORA啟不來(lái)啟不來(lái) 在在tuxedo環(huán)境中,對(duì)于環(huán)境中,對(duì)于oracle數(shù)據(jù)來(lái)說(shuō),有時(shí)會(huì)出現(xiàn)數(shù)據(jù)來(lái)說(shuō),有時(shí)會(huì)出現(xiàn)TMS_ORA進(jìn)程(事務(wù)管理器進(jìn)程)啟不來(lái)的情況。進(jìn)程(事務(wù)管理器進(jìn)程)啟不來(lái)的情況。 對(duì)于這個(gè)故障,一般的原因有:原來(lái)對(duì)于這個(gè)故障,一般的原因有:原來(lái)TMS_ORA進(jìn)程的進(jìn)程的IPC資源沒(méi)有釋放;數(shù)據(jù)庫(kù)中資源沒(méi)有釋放;數(shù)據(jù)庫(kù)中v$global_transaction表表被鎖住,無(wú)法插入新的記錄;數(shù)據(jù)庫(kù)被鎖住,無(wú)法插入新的記錄;數(shù)據(jù)庫(kù)DX鎖等待。鎖等待。 具體解決的辦法,就是將具體解決的辦法,就是將TMS_ORA等待的資源:等待的資源:IPC資源、資源、v$global_tra

31、nsaction表鎖、表鎖、DX鎖等,給釋放出鎖等,給釋放出來(lái)。來(lái)。 首先要找到鎖定這些資源的對(duì)象或進(jìn)程,然后將該進(jìn)程首先要找到鎖定這些資源的對(duì)象或進(jìn)程,然后將該進(jìn)程kill掉,然后再重新啟動(dòng)相關(guān)進(jìn)程和掉,然后再重新啟動(dòng)相關(guān)進(jìn)程和TMS_ORA 。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。34l數(shù)據(jù)庫(kù)連接斷開(kāi)數(shù)據(jù)庫(kù)連接斷開(kāi)tuxedo另一個(gè)令人頭痛的問(wèn)題,就是:其與數(shù)據(jù)庫(kù)另一個(gè)令人頭痛的問(wèn)題,就是:其與數(shù)據(jù)庫(kù)建立的是長(zhǎng)連接。而這種長(zhǎng)連接被斷開(kāi)時(shí),建立的是長(zhǎng)連接。而這種長(zhǎng)連接被斷開(kāi)時(shí),tuxedo自身檢測(cè)不到,無(wú)法自動(dòng)重新連接。從而導(dǎo)致服務(wù)自身檢測(cè)不到,無(wú)法自動(dòng)重新連接。從而導(dǎo)致服務(wù)無(wú)法正常使用(一般

32、都是無(wú)法正常使用(一般都是 service handle error之之類的錯(cuò)誤信息)。類的錯(cuò)誤信息)。對(duì)于這種問(wèn)題,一方面,只能重新啟動(dòng)服務(wù)來(lái)恢復(fù);對(duì)于這種問(wèn)題,一方面,只能重新啟動(dòng)服務(wù)來(lái)恢復(fù);另一方面,可以考慮開(kāi)發(fā)監(jiān)控工具,自動(dòng)檢測(cè)服務(wù)另一方面,可以考慮開(kāi)發(fā)監(jiān)控工具,自動(dòng)檢測(cè)服務(wù)的數(shù)據(jù)庫(kù)連接是否斷開(kāi),并自動(dòng)報(bào)警和重新啟動(dòng)。的數(shù)據(jù)庫(kù)連接是否斷開(kāi),并自動(dòng)報(bào)警和重新啟動(dòng)。(c)2003,南京聯(lián)創(chuàng),版權(quán)所有。35lDX鎖鎖 tuxedo導(dǎo)致的導(dǎo)致的oracle的的一個(gè)重大問(wèn)題是:常常出現(xiàn)長(zhǎng)時(shí)一個(gè)重大問(wèn)題是:常常出現(xiàn)長(zhǎng)時(shí)間的間的DX鎖。一旦出現(xiàn)這個(gè)鎖,一方面鎖。一旦出現(xiàn)這個(gè)鎖,一方面TMS_ORA可能啟可能啟不來(lái),另一方面可以不來(lái),另一方面可以tpbegain無(wú)法開(kāi)始新事務(wù)。無(wú)法開(kāi)始新事務(wù)。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論