TUXEDO是什么?
    BEA TUXEDO是在企业、Internet 这样的分布式运算环境中开发和管理三层结构的客 户/服务器型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。BEA TUXEDO是企业、 Internet 分布式应用中的基础主干平台。它提供了一个开放的环境,支持各种各样的客 户、数据库、网络、遗留系统和通讯方式。
特点:
²       大量在线用户
²       巨量数据
²       信息访问
²       小事务
²       复杂网络
C/S系统的层次结构
以下列出了分布式系统的主要层次:
²       用户界面:被分成表示管理和表示逻辑。代表有主机框架的3270仿真终端;UNIX系统的X终端等,最新的Web浏览器界面也是。
²       商业逻辑:包含应用逻辑和应用规则。
²       数据管理:分为数据访问逻辑(SQL)和数据库管理。
区分C/S结构的类型可以根据以下特性:
客户端和服务端程序间逻辑分布,如何实现层次功能;中间件产品及技术的使用。
C/S模式的演化
    上图列举了不同种类的C/S模式。其中大型主机系统仍然统治着最大的OLTP应用;基于X终端和UNIX工作站的应用在80年代后期兴起;廉价的WINTEL机器支持的Windows GUI通常用于2层模式;数据库新技术和OSF带领了3层应用模式。
    C/S系统是一种分布式系统,由其程序决定其特点:
²       客户端部分执行前端功能,如:提供用户界面,向后台发出用户请求的交易,将结果返回给用户。
²       服务提供一般后端功能,按交易组织,将结果返回前端。
²       交易是分散的,按需求的操作,可以被远程客户端访问的程序。
C/S模式可能会有如下优点:
²       减小客户端程序体积,提高反应速度
²       位置无关
²       模块化
²       扩展性好
可管理多层C/S模式
    在可管理多层(Managed Multi-Tier –MMT)C/S模式中,提出了中间件管理。在本书范围内,此点由交易处理(Transaction Processing –TP)管理完成,提供以下功能:
²       在客户端和服务端之间进行通讯和传输
²       提供良好的系统管理
²       提供交易、配置的分布式管理
它管理服务端从多个客户端收到的数据流,并不是在C/S间建立一对一的关系,而且客户端可以向多个服务发出请求。这种特点保证了TUXEDO可以提供强大的分布式交易处理框架。
由于不必进行通讯和交易管理,数据库引擎可以专注于其特长:管理数据!在这种情况下,数据库成了一个纯RM(Resource Manager)。
MMT C/S模式给OLTP应用增加了如下优点:
²       所有C/S模式的优点在MMT模式下都得到了增强。实际上,由于中间件的引入,处理能力得到改善。
²       由于中间件管理了数据流,带来了许多新功能,如:交易路由、服务分布、管道、数据依赖路由等成为可能。
²       统一的数据流控限制了最大交易数,总的数据库过程少了,服务器空闲时间也少了,这就增加了数据库和系统效率。
²       应用代码的设计可以不考虑物理地址和内部数据表示。
²       配置成了一件单纯的管理工作,进一步的,可以通过配置轻易的改变系统结构。服务可以动态的增加、删除和重启动。
TUXEDO的C/S方案
    构成TUXEDO系统的各部分、工具和其特性组成的MMT C/S模式给应用带来的便利及TUXEDO的实现方法:
MMT C/S模式的优点
TUXEDO的实现技术
模块化
客户端,交易,服务
最大化的处理能力和流量
客户端交易流量控制,分布式配置,快速消息匹配和路由
通讯传输技术
ATMI访问,一种简单且容易定义的接口
实时应用管理
核心配置文件,MIB,管理工具和基于浏览器界面的GAI
名字服务和交易位置无关
公告牌提供目录交易便利
应用数据服务
应用服务位置可以在配置中随意配置
TUXEDO系统的特点
²       TUXEDO /T
n        管理C/S数据流
n        支持3层结构
n        多平台支持
n        协同(BEA Connect, /TxRPC, /OSITP)
n        开发
u      通讯手段
l        同步
l        异步
l        会话
l        广播通知
l        管道
l        事件订阅
u      缓冲数据类型(自动编、解码)
u      事务
n        管理
u      核心配置管理
u      管理信息库(MIB)
u      Web界面管理接口
u      负载平衡
u      网络配置
u      安全
u      数据依赖路由
u      数据压缩
²       BEA JOLT 将TUXEDO中间件框架扩展到Internet和Java客户端
²       TUXEDO /Q
n        通讯保障
n        预定处理
²       TUXEDO /WS
n        多平台支持
n        把BEA TUXEDO ATMI API扩展到客户应用程序中
²       TUXEDO /Domains
²       TUXEDO /COBOL
一个例子
    一个TUXEDO 应用可以分成3部分
²       发布交易请求的客户端
²       运行响应请求交易的服务
²       描述应用机器和服务信息的配置文件
上图是本例的示意图:
    客户端请求交易“TOUPPER”,数据是“hello world”。交易“TOUPPER”将字符串转成大写,将结果成功返回客户端。
客户端范例
#include <stdio.h>
#include “atmi.h”
main()
{
      char *buf;
      long len;
      if (tpinit((TPINIT * )NULL) == -1)
      {
            exit(1);
      }
      if ((buf=tpalloc(“STRING”,NULL,80))==NULL)
      {
            tpterm();
            exit(2);
      }
      strcpy(buf, “hello world”);
      if ( tpalloc(“TOUPPER”,buf,0,&buf,&len,0)== -1)
      {
            fprintf(stderr,”service requst fail\n”);
            tpfree(buf);
            tpterm();
            exit(3);
      }
      printf(“return string is :%s\n”,buf);
      tpfree(buf);
      tpterm();
      exit(0);
}
包含TUXEDO系统的头文件”atmi.h”,以便引用TUXEDO的函数和变量定义。
客户端调用tpinit()连接应用
用tpalloc()分配一个STRING类型数据缓冲
将”hello world”拷贝进缓冲
用tpcall()包含数据缓冲,向交易“TOUPPER”发一个同步请求
打印出改变的数据缓冲
调用tpterm()切断与应用的连接
交易范例
#include <stdio.h>
#include <ctype.h>
#include “atmi.h”
void TOUPPER (TPSVCINFO *rqst)
{
      int i;
      for ( i=0;i<rqst->len-1;i++)
      rqst->data[i] = toupper(rqst->data[i]);
      tpreturn(TPSUCCESS,0,rqst->data,0L,0);
}
包含TUXEDO系统头文件”atmi.h”
象所有的TUXEDO交易函数一样,TOUPPER不用直接返回任何值,所以返回类型为void
从客户端收到的数据放在TPSVCINFO结构中,是唯一的入参
交易处理…
用tpreturn()将数据缓冲返回客户端
配置文件
    有关应用的信息,如可用交易,交易位置,应用范围等,有必要集中管理于单一资源。事实上,这些信息被集中于文件UBBCONFIG。该文件分7节,主要部分内容描述如下:
*RESOURCES节包含全局信息,如:标识公告牌位置的唯一键值(IPCKEY),主控节点的名字(MASTER),应用类型(MODEL),下文例子中设为SHM表示是一个单节点应用。
*MACHINES节包含节点信息,如:机器物理名,TUXEDO系统位置(TUXDIR),服务码位置(APPDIR),以及本文件的二进制码文件名(TUXCONFIG)。
*GROUPS节包含一些管理用信息,如设定服务或交易的分布式事务处理。
*SERVERS节包含需要启动的交易和其组信息等其他信息。
*SERVICES节包含影响应用操作方式的的必要信息。本节列出的交易都是需要特别配置的,如有特别的优先级,装入参数,数据依赖路由等。
配置文件范例
#file : ubbconfig
*RESOURCES
IPCKEY                     5000
MASTER            SITE1
MODEL              SHM
*MACHINES
gumby                 LMID=SITE1
TUXDIR              =”/usr/tuxedo”
APPDIR                    =”/usr/apps/simpapp”
TUXCONFIG     =”/usr/apps/simpapp/simpapp.tux”
*GROUPS
GROUP1            LMID=SITE1      GRPNO=1
*SERVERS
simpserv                   SRVGRP=GROUP1       SRVID=1
*SERVICES
TOUPPER
建立应用
    建立一个TUXEDO应用,必须进行以下步骤:
²       设置环境变量。
TUXDIR表示TUXEDO用户目录;TUXCONFIG是二进制配置文件名;在路径中加入TUXEDO的可执行文件路径;如果用到公共库,还必须包含LD_LIBRARY_PATH,指出公共库位置。
TUXDIR=/usr/tuxedo
PATH=$PATH:$TUXDIR/bin
TUXCONFIG=/usr/apps/simpapp/simpapp.tux
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TUXDIR/lib
export LD_LIBRARY_PATH PATH TUXDIR
²       用buildclient命令从源程序编译出客户端可执行文件。
buildclient –f client.c –o client -v
²       用buildserver命令从源程序编译出服务端可执行文件。-s参数列出提供的交易。
Buildserver –f simpserv.c –o simpserv –s TOUPPER -v
²       用tmloadcf命令从文本配置文件ubbconfig生成二进制配置文件tuxconfig。
Tmloadcf –y ubbconfig
开发TUXEDO C/S系统的必要步骤
²       配置环境变量
²       编码并编译客户端和服务端的程序
²       由文本的ubbconfig生成二进制TUXCONFIG
²       启动系统和服务
²       测试应用
²       关闭系统