本文最后更新于 2022年10月21日 上午
Tuxedo 简介 Transaction for Unix has been Extended for Distributed Operation分布式操作扩展之后的Unix事务系统
Tuxedo是第一个严格意义上的中间件产品
1 2 3 TUXEDO是在企业、Internet 这样的分布式运算环境中,开发和管理三层结构的客户/服务器型关键任务应用系统的强有力工具。 它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。 开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。
1 Tuxedo是一个事务处理(TP)监督器(transaction processing monitor),它管理联机事务处理(OLTP)系统操作的事务。客户通过结构化查询语言(SQL )调用,或其他类型的请求,产生对server 的请求。这个事务处理监督器确信,正确地进行了改动,以保证数据的完整性。这在一个事务能够改变多个位置的数据库的分布式数据库环境是很重要的。这个事务处理监督器使用双阶段提交,以保证全部的数据库都已经接收和认可了这些数据的正确性。
作用
屏蔽分布式环境中各种通信协议、硬件体系结构、操作系统、数据库和其它应用服务等方面的差异
使分布于网络节点上的应用程序的各个单元部件之间能够进行互操作,并协调操作的一致性和完整性,最大限度地节省系统资源,提高系统性能
Tuxedo 已经广泛地应用于金融、电信、制造业等各行各业的核心业务系统
架构 三层架构:客户端(表现层)-中间件服务层(业务逻辑层)-db
1 2 应用 weblogic中间件的系统一般采用BS架构,大部分用HTTP协议,少量使用RMI协议 应用 Tuxedo中间件使用的是tuxedo协议
通讯 1 2 3 4 5 Tuxedo 服务器一次请求需要进行两次交互才可以Tuxedo 有两个负责通讯的进程(WSL,WSH) 客户端通过ip 地址和端口号与WSL建立连接,由WSL认证请求是否合法,返给客户端的响应中包含另一个ip 地址和端口号 客户端用新的ip 和端口号进行请求WSH
部署 下载 [下载地址][下载地址-website]
安装 配置 一个TUXEDO应用系统的所有资源都在一个文本文件中进行定义,该文件称为UBBCONFIG,在配置完成后,UBBCONFIG被编译成一个二进制的文件TUXCONFIG。
在TUXEDO系统启动时,从该文件中读取系统的配置信息。UBBCONFIG文件类似WINDOWS下的*.INI文件。
配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 *RESOURCES IPCKEY 123456 DOMAINID simpapp MASTER simple MAXACCESSERS 900 MAXSERVERS 10 MAXSERVICES 20 MODEL SHM LDBAL N *MACHINES DEFAULT: APPDIR="/home/tuxedo/tuxedo11/tuxedo11gR1/applications/simpapp" TUXCONFIG="/home/tuxedo/tuxedo11/tuxedo11gR1/applications/simpapp/tuxconfig" TUXDIR="/home/tuxedo/tuxedo11/tuxedo11gR1" MAXWSCLIENTS=5 txcentos LMID=simple *GROUPS GROUP1 LMID=simple GRPNO=1 OPENINFO=NONE JSLGRP LMID=simple GRPNO=2 JREPGRP LMID=simple GRPNO=3 *SERVERS DEFAULT: CLOPT="-A" simpserv SRVGRP=GROUP1 SRVID=1 WSL SRVGRP=GROUP1 SRVID=10 CLOPT="-A -- -n //172.17.0.6:31000 -m 5 -M 10 -x 5" JSL SRVGRP=JSLGRP SRVID=755 CLOPT="-A -- -n //172.17.0.6:30000 -m 5 -M 10 -x 5" JREPSVR SRVGRP=JREPGRP SRVID=302 CLOPT="-A -- -W -P /home/tuxedo/tuxedo11/tuxedo11gR1/udataobj/jolt/repository/jrepository" *SERVICES TOUPPER
配置详解 一个TUXEDO系统可以跨越多台服务器,一台服务器上可以有多个GROUP,但一个GROUP只能在一台服务器上,一个GROUP中可以有多个SERVER,一个SERVER中可以有多个SERVICE
RESOURCES(必需)-与整这个系统有关的配置
配置项
说明
取值
备注
IPCKEY
TUXEDO使用它标识公告板及其他的IPC资源 它不能与该服务器上其他的IPC资源的ID号冲突
32769-262142
MASTER
指定该TUXEDO应用系统的MASTER服务器,在该服务器上对整个TUXEDO系统进行管理配置 可以为该MASTER服务器指定一台备份服务器,当该MASTER服务器宕机,可从BACKUP服务器上进行管理 在进行系统迁移时,也要指定BACKUP服务器
DOMAINID
TUXEDO应用系统的唯一标识
UID
可对该TUXEDO应用系统进行管理的TUXEDO系统管理员的用户ID 在UNIX下就是UNIX系统的用户ID,默认为执行TMLOADCF的用户的ID 在NT下该设置没有用,要设为0
UID, GID, PERM:这三个参数控制对系统IPC资源的存取权限
GID
在UNIX下为UID中所指定的用户所在的组ID,在NT下该设置没有用,要设为0
PERM
指定对TUXEDO系统IPC资源的存取权限 默认值为0666,即任何人都可以对该IPC资源进行存取
默认值为0666
MAXACCESSERS
在本系统的一个节点(一台服务器)上 同时可以有多少个进程可以访问该TUXEDO系统的公告板 它包括本地客户端进程,SERVER进程,但不包括管理进程如:BBL,DBBL
默认值为50
MAXACCESSERS,MAXSERVERS,MAXSERVICES:这三个参数控制该TUXEDO应用系统对IPC资源的使用情况
MAXSERVERS
在本系统中,总共可以有多少个SERVER存在,包括进行管理的SERVER, 如:BBL,TMS等。
默认值为50
MAXSERVICES
在本系统中,总共可以有多少个SEVICE存在,
默认值为100
MODLE
应用系统的部署方式
SHM: 单机或多台服务器但共用一个全局共享内存 MP: 多台服务器但没有共用一个全局共享内存
OPTION: LAN: 是多机(MP)部署模式 MIGRATE: 可对该系统进行迁移
SCANUNIT
指定检查的最小时间单位,它单位为秒,必须是5的倍数
默认值为10,即10秒
SANTIYSCAN
每隔多少个SCANUNIT检查一次, SANITYSCAN*SCANUNIT不能大于 300秒
默认值为12,即120秒
BLOCKTIME
指定一个消息可以阻塞多长时间 如果过了SANITYSCAN*SCANUNIT秒该消息还没有发送出去,将超时出错 SANITYSCAN*SCANUNIT不能大于32767秒
默认值为6,即60秒
LDBAL
要不要进行负载均衡
Y:要,N:不要,默认值为不要
MAXCONV
在一台服务器上最多可以有多少个会话同时存在
范围:0-32768,默认值为10
NOTIFY
设置消息的通知方式
默认为DIPIN IGNORE: 该TUXEDO系统中的CLIENT不接收任何消息 SIGNAL: 用SIGUSR1,SIGUSR2信号通知CLIENT有消息到来,如果在非UNIX平台上设置采用该方式,那么会被自动转化为DIPIN方式。 DIPIN: 当CLIENT调用ATMI函数时,顺便检查看是否有消息,如果有就发送给该CLIENT
MACHINES(必需)- 一个TUXEDO应用系统可以跨越多台服务器,在该节中配置与每台服务器有关的信息 该TUXEDO应用系统所包含的每台服务器都要在该节中进行配置
配置项
说明
取值
备注
LMID
在TUXEDO,要为该应用系统中的每台服务器指定一个逻辑服务器名
uname -r
UID,GID,PERM,MAXACCESSERS,MAXCONV这些在RESOURCES中的配置,在MACHINES中可以被重新配置,并且这些新的配置值会覆盖在RESOURCES中的配置值
TUXCONFIG
配置文件TUXCONFIG所在的路径
TUXDIR
TUXEDO的安装目录
APPDIR
TUXEDO应用系统所在的目录
ENVFILE
该服务器上与TUXEDO有关的环境变量
TYPE
指定该服务器的类型 当两台服务器的TYPE不一样时,在它们之间传送数据时要进行编码/解码工作
ULOGPFX
指定ULOG文件所在的目录及前缀
默认目录为$APPDIR,前缀为ULOG
GROUPS(必需)-TUXEDO中的服务可被分为多个组,在该节中配置与组有关的信息
因为GROUP与数据库之间是一对一的关系,在一TUXEDO应用系统中,如果有多个数据库,就要配置多个GROUP,在该GROUP中配置TUXEDO与数据库的连接参数等
数据依赖路由是以GROUP为单位的
进行系统迁移时也时以GROUP为单位的一个GROUP有一个名字,还有一个GROUP
SERVERS(可选)
配置项
说明
取值
备注
DEFAULT
在DEFAULT中的设置对所有的SERVER起作用
SRVGRP
该SERVER所在的GROUP
SRVID
该SERVER所对应的ID,在一个GROUP中必须唯一
MIN
该SERVER最少启动的进程数
MAX
该SERVER最多可启动的进程数
RESTART
该进程死掉时是否可以自动重起
默认为N(不可以)
GRACE,MAXGEN
在GRACE秒内,该进程最多可以重启MAXGEN次
RCMD
指定该SERVER重启时,要执行的一个可执行文件名
RQADDR
该请求队列的名字,一般设成与该SERVER的名字一样
MSSQ
RAPERM
该请求队列的存取权限
默认为0666
REPLYQ
该SERVER中的某个SERVICE调用其他的SERVICE,并有返回结果 则应设置REPLYQ=Y,即把其他SERVICE的应答放到该队列中
CONV
该SERVER是否采用会话(CONVERSATION)通讯方式 注意采用会话通讯方式的SERVICE要单独在一个SERVER中 不能与采用其他通讯方式的SERVICE在同一个SERVER中,并且该SERVER要设置CONV=Y
CLOPT -e
指定错误输出文件
默认为$APPDIR下的stderr
CLOPT -o
指定标准输出文件
默认为$APPDIR下的stdout
CLOPT -r
记录该SERVER中SERVICE每次调用的处理时间,并记录在错误输出文件中 然后可采用TUXEDO的性能分析工具txrpt对该SERVER进行性能分析
CLOPT -A
发布该SERVER包含的所有的SERVICE
WSL SRVGRP=”GROUP1” SRVID=1116 CLOPT=”-A – -n//192.168.120.113:8888 -m 2 -M 5 -x 6”
CLOPT –
表示服务器起来之后的参数,其中的值与UBB中的参数有约束
CLOPT -n
远程客户端通过该端口与服务器建立连接
CLOPT -m
最少启动多少个WSH进程
CLOPT -M
最多启动多少个WSH进程
默认值为MAXWSCLIENTS/m
CLOPT -x
每个WSH进程可同时处理多少个远程客户端
默认值是10
SERVICES(可选)
配置项
说明
取值
备注
AUTOTRAN
调用该SERVICE时是否自动启一个全局事务
默认为N
LOAD
如果采用负载均衡,指定该SERVICE的负载因子
默认为50
PRIO
指定该SERVICE的优先级
默认为50
DDR
指定数据依赖路由规则
NETWORK(可选) ROUTING(可选) 调用 Jolt 启动Jolt,Jolt方式需license
10之后的版本不需license
tmloadcf -y ubbsimple
buildclient -o simpcl -f simpcl.c
buildserver -o simpserv -f simpserv.c -s TOUPPER
启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [oracle@txcentos simpapp]$ tmboot -y Booting all admin and server processes in /home/tuxedo/tuxedo11/tuxedo11gR1/applications/simpapp/tuxconfig INFO: Oracle Tuxedo, Version 11.1.1.3.0, 64-bit, Patch Level (none) Booting admin processes ...exec BBL -A : process id =11731 ... Started. Booting server processes ...exec simpserv -A : process id =11743 ... Started.exec WSL -A -- -n //172.17.0.6:31000 -m 2 -M 10 -x 5 : process id =11744 ... Started.exec JSL -A -- -n //172.17.0.6:32000 -m 3 -M 10 -x 5 : process id =11747 ... Started.exec JREPSVR -A -- -W -P /home/tuxedo/tuxedo11/tuxedo11gR1/udataobj/jolt/repository/jrepository : process id =11751 ... Started. 5 processes started. [oracle@txcentos simpapp]$./simpcl welcome Returned string is: WELCOME [oracle@txcentos simpapp]$
tmadmin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [oracle@txcentos simpapp]$ tmadmin tmadmin - Copyright (c) 1996-2010 Oracle. Portions * Copyright 1986-1997 RSA Data Security, Inc. All Rights Reserved. Distributed under license by Oracle. Tuxedo is a registered trademark. > psr Prog Name Queue Name Grp Name ID RqDone Load Done Current Service --------- ---------- -------- -- ------ --------- --------------- BBL 123456 simple 0 1 50 ( IDLE ) simpserv 00001.00001 GROUP1 1 2 100 ( IDLE ) WSL 00001.00011 GROUP1 11 0 0 ( IDLE ) JSL 00001.00012 GROUP1 12 0 0 ( IDLE ) JREPSVR 00001.00013 GROUP1 13 1 50 ( IDLE ) > psc Service Name Routine Name Prog Name Grp Name ID Machine ------------ ------------ --------- -------- -- ------- ------ ------ TOUPPER TOUPPER simpserv GROUP1 1 simple 2 AVAIL > pq Prog Name Queue Name --------- ------------------- --------- -------- -------- ------- JREPSVR 00001.00013 1 - 0 - simple BBL 123456 1 - 0 - simple JSL 00001.00012 1 - 0 - simple simpserv 00001.00001 1 - 0 - simple WSL 00001.00011 1 - 0 - simple > pclt LMID User Name Client Name Time Status Bgn/Cmmt/Abrt --------------- --------------- --------------- -------- ------- ------------- simple oracle WSH 0:04:27 IDLE 0/0/0 simple oracle WSH 0:04:27 IDLE 0/0/0 simple oracle JSH 0:04:27 IDLE 0/0/0 simple oracle JSH 0:04:27 IDLE 0/0/0 simple oracle JSH 0:04:27 IDLE 0/0/0 simple oracle tmadmin 0:00:32 IDLE 0/0/0 > bbs Current Bulletin Board Status: Current number of servers: 5 Current number of services: 16 Current number of request queues: 5 Current number of server groups : 1 Current number of interfaces: 0 > pnw No network LMIDs available > q [oracle@txcentos simpapp]$
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 package example.java.bytecode;import bea.jolt.JoltMessage;import bea.jolt.JoltRemoteService;import bea.jolt.JoltSession;import bea.jolt.JoltSessionAttributes;public class JoltTest { public static JoltMessage callJoltTuxedo () { JoltSession session; JoltSessionAttributes attr; JoltRemoteService service; String message = null ; String userName = null ; String userPassword = null ; String appPassword = null ; String userRole = null ; attr = new JoltSessionAttributes (); attr.setString(JoltSessionAttributes.APPADDRESS, "//10.56.39.144:30000" ); attr.setInt(JoltSessionAttributes.IDLETIMEOUT, 300 ); session = new JoltSession (attr, userName, userRole, userPassword, appPassword); service = new JoltRemoteService ("TOUPPER" , session); service.setString("STRING" , "a boy" ); try { service.call(null ); message = service.getStringDef("STRING" , null ); service.clear(); } catch (Exception e) { } finally { session.endSession(); } return message; } public static void main (String[] args) { JoltMessage joltMessage = JoltTest.callJoltTuxedo(); System.out.println(joltMessage); } }
调用结果
1 2 3 4 A BOY Process finished with exit code 0
JNI WTC zy-tuxedo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 JSLGRP LMID=SITE1 GRPNO=21 JREGRP LMID=SITE1 GRPNO=22 JSL SRVGRP=JSLGRP SRVID=49 RESTART=Y MAXGEN=98 CLOPT="-- -n//29.23.40.141:20023 -m1 M15 -x 15 -T" JREPSVR SRVGRP=JREGRP SRVID=50 CLOPT="-A -- -P /cpic/cpicitf/bin/jrepository" add SVC/D12850:vs=1:ex=1:bt=STRING:\ bp:pn=STRING:pt=string:pf=167772161:pa=rw:ep: add PKG/D12850:D12850: tmshutdown -y tmloadcf -y cpicubb tmboot -y
什么是Tuxedo tuxedo_jolt_oralce_11.1.1.3
Linux下Tuxedo配置以及Java调用Tuxedo Java使用Jolt连接Tuxedo服务器
ques ques2 dmadmin
官网 下载地址 Linux安装tuxedo linux 安装Tuxedo11g
TUXEDO配置参数详解
Java调用Tuxedo方案浅析 下载license java使用jni连接tuxedo Tuxedo与Weblogic互连指南
使用java通过jolt调用tuxedo
wsl_tuxedo wtc/jolt_tuxedo