Tuxedo从逻辑上可以将应用分为以下几个层次:Domain、Machine、Group、Server、Service。可以通过两种方式来实现Service与Service之间的相互调用。通过tpcall进行同步或异步调用;通过tpforword实现交易请求的转发
TUXEO系统的运行需要三类IPC资源:Share Memory,Message Queue,semphone
交易调用过程
系统交易的发起过程,需要综合调用各种IPC资源。协调系统的各个管理进程协同工作。在整个交易的调用过程中:
1 首先客户端,跟需要通过TUXEDO的tpinit函数调用建立与TUXEDO服务端的通讯连接。在这一过程中同时完成对客户端的登陆用户的鉴权。在通过鉴权后,TUXEDO的系统进程WSL为其分配一个WSH受理以后发起的请求。在这一过程中,TUXEDO的WSL侦听进程对连接占用的时间进行控制 (timeout是WSL的启动参数,可配),当连接超时时,TUXEDOWSL将断开WSH。如果WSH比较繁忙,无暇处理新的连接请求,那么WSL就将请求放入消息队列中,等待受理。当然请求不会无限在消息队列中等待,超时后清除。
2 TUXEDO客户准备前台数据,并发起服务调用请求,通过tpcallacall将请求的服务命令字,以及请求数据包发送到服务端。TUXEDO服务端将客户端提交的请求交于WSH。WSH代理客户端的请求,将用户的请求放入对应的接收消息队列中。服务处于等待状态,直到有空闲SERVER来受理用户请求。超时时间通过ubbconfig中的*resource段blocktime进行控制。超时后返回系统交易失败。
TUXEDO通过维护SERVICE和SERVER对应表,来根据SERVICE查找到受理它的对应进程。
3 SERVER进程自从启动后,一直监视接收消息队列,当空闲且恰有请求位于消息队列时,从接收消息队列中取出请求,交于相应的交易处��函数处理用户请求。从交易的受理到交易的受理结束通过SERVICE段SVCTIMEOUT参数进行控制,当受理超时时,BBL向对应进程发KILLSIG。对于基于XA的应用,当事务处理超过tpbegin的超时参数时,SERVICE处理结束,返回交易失败。
4 SERVER进程将处理结果,返回数据提交到发送消息队列,由系统将返回数据返回客户端,当返回数据失败时,系统在ULOG日志中记录告警信息。
5 前台客户端取出数据,分析交易受理结果。
6 断开与后台服务端的连接,调用TUXEDO tpterm函数释放与TUXEDO服务端的连接。