【Tuxedo】Tuxedo入门

来源:互联网 发布:python 企业级架构 编辑:程序博客网 时间:2024/05/24 15:43

一、Tuxedo是什么

Tuxedo:Transaction for Unix has been Extended for Distributed Operation分布式操作扩展之后的Unix事务系统。

Tuxedo是一个客户机/服务器的中间件产品,它在客户机和服务器之间进行调节,以保证正确的处理事务,用C语言开发的,有很高的性能。广泛应用于电信、金融等领域。

TUXEDO是在Internet 这样的分布式运算环境中开发和管理三层结构的客户/服务器型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。

Tuxedo的主要作用:屏蔽分布式环境中各种通信协议、硬件体系结构、操作系统、数据库和其它应用服务等方面的差异,使分布于网络节点上的应用程序的各个单元部件之间能够进行互操作,并协调操作的一致性和完整性,最大限度地节省系统资源,提高系统性能。

二、使用Tuxedo中间件的三层架构

这里写图片描述

三层架构从左往右依次为客户端层(表现层)、中间件服务层(业务逻辑层)、数据库服务器层(数据层)。这种典型的三层架构应用非常广泛。

对于使用weblogic中间件的系统一般应用B/S架构,绝大部分采用HTTP协议,少量系统使用Java编写的客户端,使用的是RMI协议或者J2EE里的其他协议。而对于Tuxedo中间件使用的是Tuxedo协议。

三、Tuxedo的通讯过程

这里写图片描述
Tuxedo 服务器处理请求的方式与apache有本质的区别。

  Apache服务器处理请求,由客户端发出请求到服务器,由服务器对请求进行处理后将数据返回给客户端。

  Tuxedo 服务器一次请求需要两次进行两次交互,Tuxedo有两个负责通讯的进程,一个为WSL,WSL的数量可以进行配置,典型的配置一般两、三个;WSH可以有N多个。客户端通过IP地址和端口号与WSL建立连接,由WSL认证请求是否合法,在WSL的响应中包含了另外一个IP地址和端口号;然后,客户端通过拿到的新的IP地址和端口号去请求WSH 。

  客户端程序由GUI 与 Tuxeo通讯两部分组成,GUI部分主要由开发人员关心如何设计,通讯部分可能设计成几个函数供开发人员调用。对于性能测试人员可能更关心客户端与服务器之间的通讯过程。

四、Java调用Tuxedo的方案

Tuxedo为业界公认的性能、稳定性、健壮性都非常好的中间件之一,之所以能做到这么好的稳定性和健壮性,其采用私有的通讯协议是原因之一。因为采用私有的通讯协议,所以客户端与服务端的通讯质量可以全部由Tuxedo保证,客户端只需要调用Tuxedo的API即可。

但随着现在开放平台的不断崛起和发展壮大,使用有别于传统tpcall调用的方式来调用Tuxedo服务的需求越来越强烈,特别是通过Java调用Tuxedo服务的需求越来越普遍。

幸运的是,Oracle公司在这些方面已做了不少工作。总体来讲,通常可用于Java做客户端调用Tuxedo服务的方式有如下几种:WTC、Jolt、SALT、JNI。其它如JCA、/Q等通讯方式因使用较少故不予讨论。

WTC
这是最常用的调用Tuxedo服务的方式之一,这种方式只能适用于客户端使用WebLogic做服务器的情况,即只能在WebLogic内部使用WTC服务。尽管有此限制,但WTC方式仍是目前使用最广泛且最稳定的非C调用Tuxedo的技术之一。
优点:稳定、高效,客户端调用简单。
缺点:必须在系统中增加WebLogic服务器,对于本身使用非WebLogic的应用来说,采用这种方式等于是要在通讯层增加一个通讯节点,而且WebLogic外面的客户端只能通过Http协议或EJB等方式间接调用WTC及Tuxedo服务。

Jolt
Jolt是Oracle开发的专门用于实现Java调用Tuxedo服务的一种机制,Jolt分为客户端和服务器端两部分,Jolt服务器相当于Tuxedo服务器的Java代理,负责与Jolt客户端通讯并转发请求到标准Tuxedo服务以及转发应答给Jolt客户端。Jolt客户端就是一组jar包,通讯客户端程序调用Jolt包中的API实现与Tuxedo服务器的通讯。Jolt客户端可以运行于任何J2EE容器或纯粹的JVM中。
优点:简单,对客户端侵入性小,客户端只需要包含Jolt包即可。
缺点:服务端必须专门配置Jolt服务,另外Jolt并没有包含在标准Tuxedo组件包中,需要另外购买。另据不可靠测试,Jolt性能不如WTC。

SALT
SALT是Oracle开发的将标准Tuxedo服务包装成WebService服务的组件。SALT类似Jolt,也是在Tuxedo服务器端增加一个包装层,实现SCA及WebService(SOAP/UDDI/WSDL)系列协议的处理。SALT也没有包含在标准Tuxedo组件包中,需要单独购买。
优点:客户端无侵入性,不需要依赖于任何Tuxedo或Oracle的API及程序库。
缺点:客户端必须具备WebService调用的能力,另外尽管WebService协议早已经是标准协议,但不同平台间WebService的互操作性问题仍需要实际应用的检验,且这个问题不容乐观。

JNI
JNI是Java标准规范中实现Java与本地动态库互操作的接口。通过JNI,Java程序可以调用任何用C或其它语言编写的本地动态库中的函数,当然就可以使用JNI的方式实现对标准C语言编写的tpcall的调用。
优点:投入最少,不需要安装额外的组件。Java调用简单,高效。
缺点:稳定性是本方案需要考虑的重点,本地库中的BUG可能导致整个JVM崩溃。必须对本地库的异常处理及性能做大量严格测试,以减少出问题的可能。另外,从系统稳定性及健壮方面考虑,客户端应该支持多JVM的负载均衡,以减少JVM崩溃导致的灾难性损失。

综上所述,使用Java调用Tuxedo服务的方式有很多,每种方式都有各自的优点和缺点,实际使用中应根据应用的具体情况权衡选择。

1 0
原创粉丝点击