摘 要 本文研究了中间件产品BEA Tuxedo(Transaction for UNIX has been Extended for Distributed Operation)的特点和优势。并结合具体的例子研究了BEA Tuxedo的客服程序、服务程序的实现,以及BEA Tuxedo的通信方式。 关键词 BEA Tuxedo、中间件 引 言 中间件(Middleware)是近年来迅速、壮大起来的一个软件领域。在系统应用的层次信息结构中,他处于操作系统和用户应用之间。对应用程序来说,其主要作用是屏蔽操作系统的异构和实现稳定安全的支撑环境,以便于不同系统间的信息交换。开发人员编程时可以利用中间件产品提供的跨平台的、统一的接口,来规避操作系统的差异。这在提高应用程序的可移植性的同时也缩短了应用开发的周期。 中间件用以提供客户机与服务器之间的连接服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和 硬件平台,中间件能提供符合接口和协议规范的多种实现方式。由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件系统管理着客户端程序和数据库或者早期应用软件之间的通讯。而且中间件在分布式的客户和服务之间扮演着承上启下的角色,如事务管理、负载均衡以及基于Web的等。 1 主要中间件的分类 中间件包括的范围十分广泛,针对不同的需求涌现出多种各具特色的中间件产品。由于中间件需要屏蔽分布环境中异构的操作系统和协议,它必须能够提供分布环境下��通讯服务,我们将这种通讯服务称之为平台。基于目的和实现机制的不同,我们将平台分为以下主要几类: ⑴ 远程过程调用(Remote Procedure Call) ⑵ 面向消息的中间件(Message-Oriented Middleware) ⑶ 对象请求代理(Object Request Brokers) 平台可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等等。在这些基本的通讯平台之上,可构筑各种框架,为应用程序提供不同领域内的服务,如事务处理监控器、分布数据访问、对象事务管理器OTM等。平台为上层应用屏蔽了异构操作系统的差异,而其上的框架又定义了相应领域内的系统结构、标准的服务组件等。用户只需告诉框架所关心的事件,然后提供处理这些事件的代码,事件发生时,框架调用用户的代码。用户代码不用调用框架,用户程序也不用关心框架结构、执行流程、对系统级API的调用等,所有这些都由框架负责完成。因此,基于中间件开发的应用具有良好的可扩充性、易管理性、高可用性和可移植性。 2中间件产品TUXEDO分析 中间件产品TUXEDO是Transaction for UNIX has been Extended for Distributed Operation的简称,即被分布式操作扩展之后的UNIX事务系统 。TUXEDO是一个基于消息类型的中间件产品,在1984年由AT&&T的贝尔实验室开发完成的。1995年被BEA公司收购。BEA TUXEDO是在、Internet 这样的分布式运算环境中开发和管理三层结构的客户/服务器型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。开发人员能够用它建立跨多个 硬件平台、数据库和操作系统的可互操作的应用系统。 TUXEDO中间件的工作原理如图一所示:Client向System/T发出查询请求,以找到Server消息队列的地址;Client根据找到的入口地址将请求发送到Server的消息队列中;
图1 tuxedo中间件工作原理 Server处理请求,并将结果返回给Client的消息队列。 System/T是Tuxedo系统的核心,它实现了Tuxedo的所有功能和特征,如C/S数据流管理、服务请求的负载均衡、全局事务管理以保证交易的完整性、同步/异步服务请求、两阶段提交以确保消息的发送等。System/T提供了一个类似公告栏的服务,用以发布C/S计算机环境中所有服务器、服务和客户机的信息,供其它分布式计算的参与者使用。 中间件产品TUXEDO的特点[1]: ⑴ 分布式交易管理:BEA Tuxedo使客户机和服务器可参与涉及多个数据库协调更新的分布式交易。并确保所有数据库的正确更新或恢复到初始状态,从而在任何组件出现故障时均能保证数据的完整性; ⑵ 高可用性:BEA Tuxedo的一个主要性能是保证对系统组件进行持续的监视,查看应用系统、交易、网络及 硬件是否出现故障。一旦出现故障,BEA Tuxedo会从逻辑上把故障组件从系统中排除,管理必要的恢复程序并重新为消息和交易选择路由,以使系统继续运行。对于最终用户而言,所有这些都是完全透明的,且不需要中断服务; ⑶ 动态负载均衡:BEA Tuxedo可以根据系统的负载指示,自动开启和关闭应用服务,以满足���应用系统的高强度使用需求。同时还可以均衡所有可用系统的负载,以确保无论服务是在同一个节点还是分布在节点之间系统都能被平均使用资源,达到负载均衡; ⑷ 数据依赖路由(DDR):BEA Tuxedo可按照消息的传输的关键路由信息来选择消息路由。这样就能够实现交易的高效处理,并发挥最佳性能; ⑸ 安全性:BEA Tuxedo支持加密(LLE安全机制),当跨网络部署BEA Tuxedo应用系统时,这些安全性机制可确保用户数据的保密性。Tuxedo还提供了插件程序机制,支持公共密钥和数字签名,以及连接应用系统的非BEA安全产品,保证了系统的安全性。 ⑹ 应用系统并行化:BEA Tuxedo通过动态复制整个网络中的分布式应用系统,可使商务应用系统发挥最佳性能。同时Tuxedo允许应用系统并行处理请求,并发处理位于不同分布式节点上的业务请求,提高开发效率。 ⑺ 提供Application To Transaction Manager Interface—ATMI:BEA TUXEDO提供的 ATMI支持为50多种 硬件平台和操作系统提供了一致的应用编程接口。ATMI让开发人员不用考虑程序所在的 硬件环境,直接编写BEA Tuxedo应用系统。 3中间件产品TUXEDO开发 TUXEDO应用开发主要包括到客户端程序、服务端程序的开发。BEA Tuxedo提供了一个其于C语言的编程接口,即应用程序事务监控接口ATMI,以便用于开发客户程序和服务程序。除了C语言接口外,BEA Tuxedo还提供了COBOL接口。在Bea Tuxedo系统中的客户端到服务端的通信过程都是通过类型缓冲区来完成的,Bea Tuxedo系统提供了大量的类型缓冲区来供使用。所有类型缓冲区都必须通过Bea Tuxedo的tpalloc(), tprealloc(), tpfree()这些公共ATMI来分配回收[2]。 3.1 创建BEA TUXEDO客户端程序 客户程序一般执行如下任务: ⑴ 调用tpchkauth()决定加入一个应用程序所需的安全级别。可能出现的响应包括:没有安全级别,应用程序口令,应用程序授权,访问控制列表,连接级加密,公钥加密,审计。这些可以根据你的需求进行选择; ⑵ 调用tpinit()来连接到一个BEA Tuxedo应用程序,所需的安全信息作为tpinit()的参数传给了应用程序; ⑶ 执行服务请求;
⑷ 调用tpterm()来断开和BEA Tuxedo应用程序的连接。客户端程序调用流程如图2所示: 图2 创建BEA TUXEDO客户端程序3.2 创建BEA TUXEDO服务端程序 服务程序一般执行如下任务: ⑴ 在BEA Tuxedo服务程序启动时,执行tpsvrinit()函数,可以在里面打开一些如数据库之类的资源供以后使用; ⑵ 在BEA Tuxedo服务程序关闭时,执行tpsvrdown()函数,可以在里面关闭tpsvrinit()中打开的资料; ⑶ BEA Tuxedo服务程序以服务的形式来响应客户程序的请求,客户程序不是通过名字来调用服务程序的,而是调用服务,客户程序不知道处理它请求的服务程序的位置; ⑷ 服务程序调用tpreturn()函数来结束服务请求,并返回一个缓冲区,必要时,将它传给客户程序;
服务端程序调用流程如图3所示: 图3 创建BEA TUXEDO服务端程序 4BEA TUXEDO通讯缓冲区: TUXEDO之间通过统一定义的类型缓冲区进行通讯,类型缓冲区可以使应用跨越不同、不同协议、不同CPU构架以及不同操作系统之间得到统一的处理,这就使得开发者在分布式环境中有效地避开了异构网络和异构计算机系统带来的差异,只需进行商业逻辑的开发上。通讯缓冲区结构如图4所示:
图4 TUXEDO通讯缓冲区 BEA TUXEDO提供以下几种通讯方式[3]: ⑴ 同步请求/应答通信 ⑵ 异步请求/应答通信 ⑶ 嵌套调用通信 ⑷ 转发调用通信 ⑸ 会话通信 ⑹ 消息通告通信 ⑺ 基于事件通信 ⑻ 队列通信 ⑼ 事务控制通信 5 结束语: 随着系统的规模不断,对系统进行有效分布式处理,提高资源利用率的要求越来越高,因此从客户/数据库方案转变到三层客户/应用系统/数据服务器结构是业界发展的趋势。本文讨论了主要中间件架构的优势,并分析了中间件产品BEA TUXEDO的开发模式和特点。分析BEA TUXEDO常见的通讯方式,包括同步请求/应答通信、异步请求/应答通信、嵌套调用通信、转发调用通信、会话通信、消息通告通信、基于事件通信、队列通信、事务控制通信的方式,并结合通讯方式分析了TUXEDO的客服程序和服务程序伪代码和部分ATMI函数。 :1 BEA Tuxedo 8.0 Documentation for the e-generation e-docs.bea.com2 徐春金. TUXEDO中��件开发与配置[M]. 电力出版社3 Chris Britton. IT体系结构与中间件——建设大型集成系统的策略[M]. 人民邮电出版社