Tuxedo-简介

本文最后更新于 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
x

1
2
应用 weblogic中间件的系统一般采用BS架构,大部分用HTTP协议,少量使用RMI协议
应用 Tuxedo中间件使用的是tuxedo协议

通讯

1
2
3
4
5
Tuxedo服务器一次请求需要进行两次交互才可以
Tuxedo有两个负责通讯的进程(WSL,WSH)

客户端通过ip地址和端口号与WSL建立连接,由WSL认证请求是否合法,返给客户端的响应中包含另一个ip地址和端口号
客户端用新的ip和端口号进行请求WSH

x

部署

下载

[下载地址][下载地址-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 # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TOUPPER TOUPPER simpserv GROUP1 1 simple 2 AVAIL

> pq
Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
--------- ------------------- --------- -------- -------- -------
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() {
//String response="";
JoltSession session;
JoltSessionAttributes attr;
JoltRemoteService service;
//JoltMessage message = null;
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);
//System.out.println(message);
//response=message.toString();
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


Tuxedo-简介
https://yqqyyq.github.io/2024/10/20/tuxedo/tuxedo/
作者
yqqyyq
发布于
2024年10月20日
更新于
2022年10月21日
许可协议