1. 強大的C/S通訊功能
不僅支援要求/應答,還支援保持交易狀態的會話模式、基於發布/訂閱的事件代理模式、基於訊息通知的單播/多播模式、基於訊息佇列的可靠訊息儲存和轉寄方式
2. 強大的聯機交易功能
通訊傳輸的只是較少的客戶請求服務名和服務結果,不再是大量繁瑣的SQL請求應答,有非同步RPC機制實現扇出並行、利用MSSQ實現多處理並行、利用轉寄機制實現流水線並行
3. 強大的分布式協調能力
作為一個TP Monitor,Tuxedo使用全域事務追蹤參與者,使用兩階段交易認可來協調完成事務
4. 完善的負載平衡機制
Tuxedo支援主機級和系統級的負載平衡,使得更多的請求被發送到計算能力較強的電腦上,預設會自動的負載平衡,也可以通過配置負載因子來幹預調度。
5. 資料依賴路由
資料依賴路由根據請求緩衝區中指定欄位的取值範圍,來把請求映射到某伺服器組上的負載平衡演算法
6. 請求優先權
7. 容錯和透明故障遷移
ATMI的訊息通訊方式
Tuxedo使用IPC訊息佇列來實現請求/應答式通訊,訊息佇列是面向無串連通訊的關鍵技術,Tuxedo系統會給每一個服務進程分配一個IPC訊息佇列,稱為請求隊列,給每個客戶機分配一個響應隊列,這樣客戶機和伺服器之間就不需要建立通訊串連,客戶機把請求訊息放入伺服器的請求隊列中,然後從自己的響應隊列中檢查響應結果。
在ATMI編程環境中,客戶機和伺服器之間使用訊息緩衝區來進行資料交換,由於ATMI訊息緩衝區具有格式化和自描述的特點,因此又稱之為類型緩衝區(Typed Buffers),類型緩衝區克服了平台差異,為不同系統下的資料表示提供了一個統一的展現
Tuxedo客戶機使用tpalloc()分配一個請求緩衝區,然後往裡面放入請求訊息,在執行tpcall()去調用一個服務,客戶機Tuxedo系統會根據tpcall()指定的服務名稱進行命名映射(name mapping),找出實現這個服務的後台進程IPC訊息佇列入口,然後進行類型判別(type validation),以檢查請求訊息和緩衝區是否符合服務參數的要求,如果符合,就從Tuxedo伺服器的運行時系統中取出服務的優先順序,並把它綁定到請求訊息上(service prioritization)。
在資料依賴路由處理中,客戶機Tuxedo系統根據路由標準決定把請求訊息發送到哪一個後台進程IPC訊息佇列,客戶機系統接下來還可以對請求訊息進行編碼、壓縮、事務上下文設定、安全設定等。這種不需連線的通訊不僅減少了建立串連的額外開銷,還提高了網路的使用效率
Tuxedo大量使用了作業系統的IPC資源,UNIX System V提供了3類IPC資源:訊息佇列(MSG)、共用記憶體(SHM)和訊號量(SEM),只有極少數作業系統如AIX的IPC資源是自適應的,不需要手工進行調整。
編譯Server端和Client端
buildserver [-s {@ filename|service [,service…] [:func]|:func}] [-v] [-o outfile] [-f firstfiles] [-l lastfiles] [{-r|-g} rmname] [-k] [-t]
buildclient [-v] [{-r rmname | -w}] [-o name] [-f firstfiles] [-l lastfiles]
工作站用戶端(WorkStation)
工作站用戶端通過WSNADDR環境變數串連到WSL,再有WLS分配WSH作為請求代理來調度服務,決定客戶機是哪一種類型是在連結時不是在設計時決定的,連結了TUXEDO本地庫(libtux.lib)產生的就是本地用戶端,連結了W/S庫(libwsc.lib以及wtuxws32.lib)產生的用戶端就是工作站用戶端,編譯時間加上-w選項就可以指示編譯器連結/WS庫。
WSL是Tuxedo系統提供的工作站監聽伺服器,在應用程式啟動時,它開始監聽伺服器上的某個連接埠,並根據配置指令自動啟動若干個WSH,形成(WSH Pool),當客戶機執行連結的伺服器時,WSL從WSH Pool中取出一個負載最小的WSH,並把客戶機請求放到它的請求隊列中,WSH代表客戶機負責把請求放到伺服器的請求隊列中,伺服器處理完成請求之後,把響應結果傳給WSH,WSH再把它返回給客戶機。Tuxedo會根據配置指令和並發壓力的大小,動態調整WSH Pool中WSH進程數量
類型緩衝區是一塊格式化了的記憶體地區,它是Tuxedo分布式應用程式之間互動資料的一種渠道。
Buffer Type |
描述 |
長度 |
編碼 |
DDR |
效率 |
CARRAY |
字元數組,NULL字元有效 |
定長 |
不支援 |
不支援 |
高 |
STRING |
同CARRAY,但NULL字元被認為是字串的結尾,在不同字元集的主機間轉換會自動進行資料轉換 |
變長 |
不支援 |
不支援 |
高 |
VIEW(32) |
使用C語言的結構組織資料 |
定長 |
支援 |
支援 |
高 |
FML(32) |
欄位緩衝區,使用欄位標識FLDID,出現順序OC,長度FLDLEN和欄位值VAL來識別欄位 |
變長 |
支援 |
支援 |
一般 |
XML |
使用XML檔案作為輸入/輸出緩衝區 |
定長 |
支援 |
支援 |
一般 |
MBSTRING |
同STRING,支援多位元組字元集,僅適於8.1以後的版本 |
定長 |
支援 |
不支援 |
高 |
FML緩衝區:
ATMI Header |
FML Header |
FLDID1 |
Values1 |
FLDID2 |
FLDLEN |
Value2 |
Unused space |
Index |
FML欄位緩衝區由4個部分組成,ATMI頭部資訊、FML頭部資訊、FML欄位空間和Index,其中ATMI和FML頭部長度是固定的,與TCP報文頭部類似,起到控制緩衝區傳輸訪問的作用,Index欄位則儲存了FLDID的索引,便於快速存取欄位值。FML緩衝區的變長的,當使用tpalloc()分配時,如果不指定長度,預設分配大小是1024KB。
FML緩衝資料只能通過FML函數來讀取,Tuxedo支援的FML函數在fml.h和fml32.h中定義,在FML描述檔案中,每個欄位都有一個Number編號,編譯器將使用這個編號來產生相應的FLDID值。
FML緩衝區具有靈活性強,可擴充性好,效率高的特點。在FML緩衝區中同一個欄位重複出現多次,當添加一個新欄位時,不需要重新修改現有的應用程式,在網路傳輸中,無效或空值欄位將被忽略。FML缺點是難以使用,在實際編程中客戶機可以使用VIEW緩衝區接收使用者輸入,然後轉換成FML,通過網路傳輸到伺服器端,再把FML轉換成VIEW
Tuxedo8.1之後通過使用MBSTRING緩衝區對中、日、韓等其他亞洲語種提供多位元組的支援,這就有效避免了以往必須把這些多字集字串封裝到CARRAY緩衝區的做法。
Tuxedo系統通訊方式
n 請求/應答方式
同步調用
非同步呼叫
嵌套調用
轉寄調用
n 會話通訊方式 (唯一支援的有狀態通訊方式,半雙工模式即同一時刻只有一方具有控制權)
n 訊息通告方式 (4種通知檢測方式:DIPIN、SIGNAL、THREAD、IGNORE)
n 事件代理方式 (通過EventBroker伺服器來實現)
n 隊列通訊方式 (TUXEDO/Q)
Tuxedo事務規範
DTP(Distributed Transaction Processing)分散式交易處理,指的是在分布式式計算中,管理和協調多個使用者和多個資料庫等共用資源之間的互動過程,DTP是TP的一種形式,它的工作流程如下:
1) AP通過TM提供的TX介面向TM發出請求,以開始一個全域事務,這時TM會分配一個GTRID來對這個事務進行標識
2) AP在事務上下文中使用ESQL來訪問RM,以處理商務邏輯
3) TM與每一個參與全域事務的RM交換事務資訊,當收到AP發出的結束事務指令時,TM會通過XA介面向各個RM發出指令,並通過兩階段交易認可協議來結束全域事務
註:AP-Application Program TM-Transaction Manager RM-Resource Manager
其中TX介面規範為AP和TM之間定義了通訊介面,由TM實現,供AP調用;而XA介面是RM和TM之間的雙向介面,由RM實現,供TM調用
Tuxedo除了支援標準的TX介面之外,還提供了自己一套XATMI介面,用於界定全域事務,可根據編程習慣自行選擇,但不能混合使用。
系統管理員必須為每一種用到的RM建立專用的TMS,以便在UBBCONFIG中配置使用,buildtms命令用於建立TMS,它需要從一個名為RM的檔案中讀取RM資訊,包括RM名、XA Switch名以及XA支援庫,RM檔案位於udataobj下,格式如下(分三段):
RM_NAME: XA_SWITCH_NAME: XA_LIBS
TMS使用TLOG記錄交易記錄以便恢複全域事務,每台Tuxedo主機上只需建立一個TLOG檔案,被所有TMS共用使用,如果一個全域事務還沒有完成,那麼它在TLOG檔案中將佔用一個分頁的空間即512KB,全域事務完成之後,在TLOG記錄中的記錄將被自動刪除。
TUXEDO/SQL是Tuxedo內建的一個示範資料庫系統,支援XA,可以和Tuxedo的事務系統很好的協同工作,使用一個VTOC(Volume table of Contents)磁碟裝置來儲存資料,VTOC是Tuxedo一種通用的檔案格式,它按照磁碟分頁來儲存資料,除了TUXEDO/SQL之外,還有TUXCONFIG、BDMCONFIG和TLOG也會使用它來儲存資料。
TUXEDO/Q是Tuxedo的一個重要的子系統,它為分布式聯機交易處理應用程式提供了一種准即時的非同步通訊方式,支援持久和非持久的訊息儲存機制,提供面向事務的訊息存取和轉寄機制,以及多樣化的出隊機制。TUXEDO/Q由隊列空間、隊列管理伺服器、轉寄伺服器和交易管理伺服器組成,它為每一個訊息提供了一個控制塊,以便TUXEDO/Q和應用程式對訊息的傳輸方式和過程進行控制跟蹤。原則:Exactly-Only-Once
TMQUEUE是TUXEDO/Q的隊列管理器,即RM,Tuxedo為它提供的交易管理員是TMS_QM。在一個VTOC上可以建立多個隊列空間,在一個隊列空間上又可以建立多個隊列。TMQFORWARD的作用類似於EJB2.0規範中的Message Driven Bean。
TUXEDO/Q兩種通訊模式:
1、 點對點通訊模式
兩個對等實體通過一個獨立的訊息系統來實現訊息的交換,它們發送和接收的都是訊息本身,而不再是服務要求應答。點對點通訊模式具有離線、非同步、松耦合的特點,即使一方離線仍然可以通訊。
2、 儲存轉寄模式
對聯機交易的有效補充,當網路中斷或停用時,客戶機可以把訊息放到一個與服務同名的隊列中,讓TMQFORWARD去轉寄調用請求
在資料轉送方面,Tuxedo只能算一個半成品,簡而言之是一個基於訊息的短事務交易平台,雖然能夠保證單個ATMI調用中把訊息可靠的傳給對方,但沒有為批量資料和大塊資料的傳輸提供成型的解決方案,如資料分割和斷電續傳等特性
Tuxedo 包含了5個主要的安全服務:
n Authentication(驗證)
n Authorization(授權)
n Auditing(審計)
n Link-Level Encryption(LLE鏈路級加密,BEA有自己私人的)
n Public Key Security(PKI)
除了LLE,其他4個安全服務都可以通過外掛程式介面來外掛使用者自訂模組
ACL和MANDATORY_ACL可以提供訪問授權服務,在ACL模式下未經過授權的資源是可以被任何使用者訪問的,授權過的資源只能被授予許可權的使用者訪問;在MANDATORY_ACL模式下只有經過授權的資源可以被授權使用者訪問,其他資源不能被任何使用者訪問
從8.1開始,Tuxedo提供了和BEA WebLogic Server安全整合的解決方案,使得TUXEDO Domain和WebLogic Domain之間可以實現SSO,具體而言,Tuxedo可以利用WebLogic內建的LDAP伺服器提供的目錄服務來作使用者驗證
多機模式MP應用的啟動流程
1) 管理員在Master節點上執行tmboot來啟動應用程式【Machine-1】
2) tmboot在Master上啟動DBBL進程【Machine-1】
3) tmboot在Master上啟動BBL進程,並初始化公告板【Machine-1】
4) tmboot在Master節點上啟動BRIDGE進程【Machine-1】
5) tmboot串連到第一個Non-Master節點上的tlistener監聽進程,給它發送一個指令,讓它啟動BSBRIDGE進程【Machine-2】
6) BSBRIDGE進程與Master節點上的BRIDGE進程通訊,把設定檔的主拷貝從Master節點複製到Non-Master節點【Machine-2】
7) tmboot給tlistener進程發送一條指令,讓它啟動BBL進程
8) tmboot給tlistener進程發送一個指令讓它啟動BRIDGE進程,當BRIDGE進程啟動起來之後,BSBRIDGE進程就會被殺死【Machine-2】
9) 如果沒有其他的節點,tmboot就又會從Master節點開始依次啟動各個節點上的系統進程(例如WSL、TMQUEUE和TMUSREVT等)和使用者進程(例如simpserv等)
MP應用程式最常見的故障就是節點分離,節點分離指的是Non-Master節點失去了和Master節點的串連,主要歸納起來無非是幾點原因:
n 網路暫時中斷
n Master節點當機
n Non-Master當機
n BRIDGE進程崩潰
可以通過ULOG、printnetwork命令、pcl命令、reconnect命令、migm備份遷移等手段解決問題。
TDOMAIN網路是基於TCP/IP設計的,進程名是GWTDOMAIN,常用於串連其他TUXEDO域和WebLogic域,每個域都有一個域管理進程DMADM,它管理著域的設定檔BDMCONFIG和網關組,每個組有一個網關管理進程GWADM和一個網關進程GWTDOMAIN,網關進程負責域之間的通訊,可以把遠端網域的服務匯入到本地並在BB中公告它們,這樣本地用戶端就可以調用它們
GWADM是運行時網關管理伺服器,從DMADM上擷取資訊,並定期報告Live狀態
域網關使用DMTLOG檔案記錄跨域事務的狀態,並在必要時用它來恢複失敗的交易,域網關還支援資料壓縮,管理員可以通過CMPLIMIT來限制網關訪問點的上限閥值
多域和多機兩種模式的比較——
模式 |
管理員模式 |
適應性 |
成本 |
多域 |
分散式管理員模式,協同處理客戶請求,只通過網關交換業務資料,對整體網路的響應要求不高 |
可以很容易的滿足業務增長添加新的模組 |
每個域都需要獨立的安裝有效License 每個域的管理程式也會佔用並發座席數,域數量越多,佔用的也越多 |
多機 |
集中式管理,所有的管理工作都是Master上完成,所以主機除了業務資料之外,還需要傳遞設定檔和管理指令,節點最好不要超過5個,否則整體網路的響應和起停會很慢 |