中间件在下面几个方面有很大的优势:
中间可以屏蔽数据库的异构性,当选用不同的数据软件时,可以通过选用中间软件,来屏蔽他们之间的不同之处,实现透明访问;
平衡系统负载,提高系统的可靠性、稳定性、可用性;
为实现分布式数据库提供一条简便的途径,采用
tuxedo基于事务的XA数据访问方式,可以很好的实现数据库的一致性,程序员不用为数据库的一致性而分散精力,将精力集中在关键业务的把握上。
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客户准备前台数据,并发起服务调用请求,通过 tpcall/tpacall将请求的服务命令字,以及请求数据包发送到服务端。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服务端的连接。