⑴ TUXEDO調服務時,客戶端返回tpcall錯誤:tpforward tpacall failure TPENOENT - no entry found。
Tuxedo介紹 原創
2016-04-02 21:23:02
11點贊
waterxcfg304
碼齡14年
關注
1、Tuxedo介紹
Tuxedo 是什麼?
Tuxedo是BEA公司(現已被Oracle公司收購)的一個客戶機/伺服器的「中間件」產品,它在客戶機和伺服器之間進行調節,以保證正確地處理事務。它用C語言技術開發的並且有很高性能。
TUXEDO是在、Internet 這樣的分布式運算環境中開發和管理三層結構的客戶/伺服器型關鍵任務應用系統的強有力工具。它具備分布式事務處理和應用通信功能,並提供完善的各種服務來建立、運行和管理關鍵任務應用系統。開發人員能夠用它建立跨多個硬體平台、資料庫和操作系統的可互操作的應用系統。
Tuxedo 的主要作用是:
屏蔽分布式環境中各種通信協議、硬體體系結構、操作系統、資料庫和其它應用服務等方面的差異,使分布於網路節點上的應用程序的各個單元部件之間能夠進行互操作,並協調操作的一致性和完整性,最大限度地節省系統資源,提高系統性能。
* Tuxedo 已經廣泛地應用於金融、電信、製造業等各行各業的核心業務系統。
三層架構
從左邊往右依次為:客戶端層(表現層),中間件服務層(業務邏輯層),資料庫伺服器層(數據層)。這種典型的三層架構應用非常廣泛。對於應用weblogic中間件的系統一般採用的B/S架構,絕大部分採用HTTP協議,少量的系統用java編寫的客戶端,使用的是RMI 協議,或J2EE里的其它協議。
對於tuxedo中間件使用的是tuxedo協議,前端開發工具可以是各式各樣,VC++ 、java 、Delphi 、VB 等。
Tuxedo 的通訊過程
Tuxedo 伺服器處理請求的方式與apache有本質的區別。
Apache伺服器處理請求,由客戶端發出請求到伺服器,由伺服器對請求進行處理後將數據返回給客戶端。
Tuxedo 伺服器一次請求需要兩次進行兩次交互,Tuxedo有兩個負責通訊的進程,一個為WSL,WSL的數量可以進行配置,典型的配置一般兩、三個;WSH可以有N多個。客戶端通過IP地址和埠號與WSL建立連接,由WSL認證請求是否合法,在WSL的響應中包含了另外一個IP地址和埠號;然後,客戶端通過拿到的新的IP地址和埠號去請求WSH 。
客戶端程序由GUI 與 Tuxeo通訊兩部分組成,GUI部分主要由開發人員關心如何設計,通訊部分可能設計成幾個函數供開發人員調用。對於性能測試人員可能更關心客戶端與伺服器之間的通訊過程。
2、tuxedo相關概念
IPC: Inter-Process Communication 進程間通信: 管道、信號量(semaphore)、共享內存(shared memory)、消息隊列(Message Queue)。
管道是UNIX系統IPC的最古老形式,數據只能單向流動。
Tuxedo在客戶機和伺服器通信中大量使用UNIX系統的消息隊列。
SSSO(Single Server Single Queue)模式:每個客戶機都有一個響應隊列來接受客戶端請求。
MSSO(Multiple Server Single Queue)模式:多個伺服器共享同一個請求隊列。
信號量包含一個計數器,表示某個資源正在被訪問和訪問的次數,用來控制多線程對共享數據的訪問。
Tuxedo使用共享內存存儲公告牌,用來公告進程狀態信息和需要在進程間共享或傳遞的數據。
-------------------------------------------------------------
Tuxedo的配置文件稱為UBBCONFIG或ubb,包含了域(Domain)、邏輯機器(Machine)、伺服器組(Group)、服務進程(Server)、服務(Service)的定義。運行前,需要把UBBCONFIG裝載成二進制文件,稱為TUXCONFIG。
Tuxedo服務啟動時,執行tpsvrinit()函數,可以打開一些如資料庫之類的資源供以後使用
Tuxedo服務停止時,執行tpsvrdown()函數,關閉資源
服務程序調用tpreturn()函數來結束服務請求,並返回一個緩沖區,必要時,將它傳給客戶程序。
--------------------------------------------------------
ATMI環境支持的C/S通信方式:請求/應答式通信、回話通信、隊列通信、事件代理通信、消息通知
請求/應答式通信:同步調用(tpcall)、非同步調用(tpacall)、嵌套調用、轉發調用(tpforward)
轉發調用和嵌套調用類似,不同的是最里層的嵌套服務可以直接給客戶程序一個響應,而不必按照調用棧 逐級返回。
回話方式:tpsend()/tprecv() 基於事件,分通告和代理
void (**p)(): 定義了一個指向函數指針的指針p
tpsetunsol(p) : 將p指向的函數func設置為客戶機的事件處理器。
tpchkunsol(): 檢查意外事件
事件代理: tppost()/tpsubscribe() 消息發布/訂閱
Tuxedo提供了兩個事件代理器(TMUSREVT TMSYSEVT)來處理訂閱請求。
隊列存儲: tpenqueue() / tpdequeue()
Tuxedo/Q用到了Tuxedo提供的兩個伺服器:消息隊列伺服器(TMQUEUE)和消息轉發伺服器(TMQFORWARD)
---------------------------
多系統多機之間通信需要每台機器上都有一個Bridge進程,通過TCP/IP通信,Bridge進程維持一個長連接,一旦建立不會斷掉。
TUXEDO應用系統的客戶端訪問TUXEDO伺服器上的服務的過程圖:
說明:
WS(Workstation Extension Proct)用於指TUXEDO產品的客戶端部分
WSC Workstation Client
WSL(Workstation Listener) TUXEDO系統自帶的一個SERVER,它偵聽一個指定的埠,WSC最初與該SERVER建立連接
WSH(Workstation Handler)TUXEDO系統自帶的一個SERVER,由它處理WSC與TUXEDO SERVER之間的通訊。
Bulletin Board(公告板)TUXEDO把系統的配置保存在一個共享內存中,該共享內存稱為公告板(BB)
BBL TUXEDO的管理進程,主要對公告板等進行管理
Workstation Client與TUXEDO SERVER建立連接的過程為:
1. WSC 調用tpinit()或tpchkauth()
2. WSC採用在WSNADDR中指定的IP地址與服務端的WSL建立連接
3. WSL為該WSC指定一個WSH,並把該WSH的偵聽埠返回給WSC
4. WSC採用返回的埠與指定的WSH建立連接,並與WSL斷開連接,這之後WSC與TUXEDO SERVER之間的通訊通過WSH進行處理,與WSL無關。
5. tpinit()或tpchkauth()調用返回。
----------------------------------------------------------
單域模式Single-Domain Model。單機模式 Single Host Model, 多機模式Multi-Processor Model
多域模式Multi-Domain Model