中间件简介:

介于客户机和server之间的夹层,突破了传统的c/s架构,为构建大规模,高性能。分布式c/s应用程序提供了通信。事物,安全。容错等基础服务,屏蔽了底层应用细节,应用程序不必从底层开发,以自身的复杂性换取应用程序开发的简单。

Tuxedo是什么?

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

交易中间件位于client和server之间

Tuxedo是一个事务处理(TP)监督器(transaction processing monitor)。它管理联机事务处理(OLTP)系统操作的事务。客户通过结构化查询语言(SQL)调用,或其他类型的请求,产生对server的请求。这个事务处理监督器确信,正确地进行了改动,以保证数据的完整性。这在一个事务能够改变多个位置的数据库的分布式数据库环境是很重要的。这个事务处理监督器使用双阶段提交。以保证全部的数据库都已经接收和认可了这些数据的正确性。

否则,这个数据库返回它的事务前状态

WTC:WebLogic Tuxedo Connector

OLTP: On-Line Transaction Processing 联机事务处理

OLAP: On-Line Analytical Processing 联机分析处理

ATMI:application-to-Transaction Monitor Interface 应用程序到事务监视器接口

DTP:Distributed Transaction Processing分布式事务处理

MSSQ:Mutile Server,Singal Queue

TUXEDO 採用三层结构的组件软件模型 :

²  Client 为第一逻辑层。实现用户交互和数据表示。向第二层的Server发请求。调用业务逻辑处理服务。

²  Server组件中间层。这些组件由TUXEDO管理,实现业务逻辑服务,接收服务请求,并返回服务结果。

²  第三层为资源管理器,比方像关系数据库。

负责管理应用系统的数据资源

Tuxedo的核心子系统:

事务管理器 TM(Transaction Manager)

工作站 WorkStation

域 Domain

队列 Queue

队列:

s

X/Open DTP 模型:

Tuxedo 与 WebLogic 通过WTC互联:

通经常使用TUXEDO实现系统的核心业务,用WEBLOGIC做为系统扩展到web的平台,实现电子商务。由WEBLOGIC 调用 TUXEDO上的服务,须要在Tuxedo和Weblogic之间建立连接。

WTC不仅能让WEBLOGIC调用TUXEDO中的SERVICE,并且能让TUXEDO调用WEBLOGIC中的EJB。但WTC仅能实现这两个平台之间的互联。

Tuxedo与WebLogic 之间通过Domain实现互联调用,Tuxedo与Weblogic分别代表两个TDOMAIN。

使用WTC时。Tuxedo方面要配置对应的Domain配置文件(dmconfig)。指明本身以及weblogic所在Domain的IP和Port。

使用WTC时Weblogic方面要做的改动是:

—在ClassPath 中,增加jamti.jar所在的路径。

—在weblogic的配置文件,bdmconfig.xml 中,增加描写叙述两个TDOMAIN的部分

在Tuxedo和weblogic 启动对应服务后,weblogic通过client端掉用对应ejb,再有该ejb调用tuxedo service。

Tuxedo应用开发:

开发TUXEDO C/S系统的必要步骤:

Ø  环境变量设置,通常写在setenv.sh

TUXDIR:Tuxedo应用的安装路径。

TUXCONFIG:便以后的Tuxedo配置文件路径。

VIEWDIR/VIEWFILES:view文件的路径和文件名称。

LD_LIBRARY_PATH:Tuxedo应用时。须要寻找的库文件的路径。

PATH: Tuxedo特用的一些可运行文件的路径

假设涉及到Domain。还有对应的环境变量。

Ø  编码,并编译client/服务端程序。

Ø  编写/编译Tuxedo配置文件。

Tuxedo配置文件ubbconfig 描写叙述了应用配置信息。Ubbconfig文件是二进制文件,是由文本文件通过tmloadcf 命令编译而成。

Ubb 文件的内容包含例如以下的Section:

Resources:包括整个应用范围的信息。必须在配置在文件第一节。必不可少。

Machines:节包括应用有关的每一个处理器的信息。本节必须在*RESOURCES节后列出。

Groups:节包括服务组的定义。

一台机器至少要定义一个服务组,每一个组仅仅要定义组名,映射组名的组号和逻辑机器名

SERVERS:包括了服务进程的信息。一个入口代表一个应用启动时载入的服务。这些信息包括服务名,命令行參数,服务环境。重新启动动等等。

SERVICES:提供了应用的特殊交易的信息,包含负载平衡(LOAD)和数据缓冲类型检查(BUFTYPE)。假设所有都是缺省值则本节能够省略。

上述每个Section中,包括众多的Option选项,详细应用时。察看Tuxedo相关文档,进行配置。

l  在执行时。这些配置信息被装入一段共享内存。称为(Bulletin-Board)。

l  TUXEDO提供一个管理进程,称为BBL(Bulletin Board Liaison),包括了一个公告牌的本地拷贝和本地server上应用的状态。

l  TUXEDO提供的还有一个管理进程DBBL(Distinguished Bulletin Board Liaison),用于多server配置时。

DBBL与BBL协同,保证全部部分的公告牌内容的一致性。

Ø  启动服务。

Ø  測试(功能測试、压力測试)。

client/Client开发

client的任务:

获取採集运行操作应得的数据。

发起向服务端的请求并等待服务端回应。

将结果依照一定格式返回给用户

client的程序设计和实现应该分成两个部分:

用户处理过程。

Tuxedo功能部分。

开发Client涉及的API:

进程管理的API:

int tpinit(TPINIT *tpinfo)

负责将Client端连接到BB,使Client端能够进一步调用ATMI函数。

TPINIT參数是一个Tuxedo定义的结构,用以存放一些安全相关的数据(必须在tuxedo的配置文件里打开security选项)。否则,能够使用NULL。

tpinit,不能在server端中出现,否则tuxedo会产生TPEPROTO(协议错)这样一个错误。

int tpterm( )

client调用tpterm( )切断与应用的连接,结束了client的TUXEDO进程 .

编写完毕的Client代码,用buildclient 命令进行编译。

buildclient –f  filename  -O output file

假设client端是一个workstation(本地没有Tuxedo server),还要加上-w 选向。

Clieng与Server 之间的通讯接口:

Client通过ATMI提供的API,与Server之间进行通讯,调用Server提供的服务。

通讯主要分为两种方式:

同步方式:採用同步通讯时,Client端在向Server端发出请求后就被堵塞,等待Server端的返回。

同步通讯方式的API:

int tpcall(  char  *svc,   char  *idata,   long   ilen, char   **odata,  long   *olen,   long   flags)

Svc : 调用的服务(service)名称

idata: 指向输入数据缓冲区指针。

ilen:   输入数据的缓冲区大小。

odata:指向输出数据缓冲区指针的指针。

olen:  输出数据缓冲区的大小的指针。

flags: 通讯控制标志。

异步方式:採用异步方式时。Client端在发出请求后。能够继续其它的任务。须要结果时。使用API去获取response队列中的结果。

异步通信方式的API

— int tpacall(char *svc, char *data, long len, long flags)

— tpacall 调用成功后返回一个整数,称为descriptor。client使用这个整数在以后的某个时间来获取结果。

ATMI提供tpgetrply( ) 来获取异步调用的结果

— int tpgetrply(int *cd, char **data, long *len, long flags)

— 參数cd , 就是存放tpacall返回descriptor的指针。

不管是tpcall、tpacall以及tpgetrply,在client端和server端都能够使用。

Server端开发:

l  Server是系统资源的联系点。

l  Server必须公布系统内能够訪问的交易,保证client能够知道把请求发往何处

l  Server启动后,进入一个循环:接收请求/处理请求/返回节后,周而复始。

l  系统管理员通过命令tmshutdown。显式地关掉tuxedo的服务。

Server端开发涉及的API:

l  tpreturn( ): 在Tuxedo中,tpreturn用来取代常规的return函数。运行tpreturn后,server将回应的数据缓冲区返回请求的发起点,交出程序的控制权。

void tpreturn(int rval, long rcode, char *data, long len, long  flags)

rval :是返回的结果,一般是TPSUCCESS, TPFAIL,  TPEXIT。

    rcode:是用户自己定义的返回值,用以进一步区分返回结果。

    data  :是返回结果缓冲区。len:是缓冲区长度。

flags :  结果返回的标志。通常都是0。

 

l  tpsvrinit()和tpsvrdone()分别用来启动和关闭服务。

假设在server的代码中,不提供这两个函数,Tuxedo将使用缺省函数。

tpsvrinit()用tpopen()缺省打开RM连接。

tpsvrdone()用tpclose()关闭RM连接。

tpsvrinit()仅仅在服务boot起来时运行一次。对应的 tpsvrdone()也仅仅在服务shutdown时运行一次。

设计服务时的几点考虑:

l  最好不要使用收到的数据缓冲向其它服务请求。由于该缓冲可能被改变引起错误。

l  所有在服务中分配的数据缓冲。在程序结束时必须所有释放;唯一例外是用在tpreturn()中的返回数据缓冲。

l  服务中的交易不应调用本服务中的交易,由于easy产生死锁。

l  一个MSSQ集中的服务须要返回时,应有自己的返回队列;否则会与本集中其它服务冲突。(RQADDR = XXXX ,同一时候REPLYQ = Y)。

缓冲区数据类型:

l  Client与Server之间,Server与Server之间,都要通过数据缓冲区来传递数据。

sTuxedo支持下图所看到的的缓冲区类型:

l  Buffer type包括:STRING,CARRY,VIEW,FML等。

STRING:是以空值结尾的单字字符串

CARRY:有长度定义的二进制数据。

VIEW:  类似于C的structure。

FML:  固定结构的自己定义缓冲。

Tuxedo中的事务处理

l  不管是Client还是Server都能够主动发起一个全局事务。

l  Tuxedo会对一个transaction产生一个全局交易ID(GTRID)。这个ID号在全部的交易參与这样的共享。并唯一标示这个transaction。

l  Tuxedo通过TLOG,来跟踪一个全局交易。

l  提供通知(notify)RM的方法,使得RM知道自己參加到一个交易中,并lock住对应的记录。

l  Tuxedo作为TM,能够管理两阶段提交(two-phase commit)。使得全部交易參与者一起提交,保持结果的一致性。

TMS和RM之间,使用XA接口来协调工作。

Tuxedo提供tpbegin, tpcommit, tpabort 等API来管理交易

Tuxedo中的事务处理:

事务管理器:

转载于:https://www.cnblogs.com/blfshiye/p/4584369.html

Tuxedo学习门户网站相关推荐

  1. 网络空间安全之信息追踪——学习笔记 利用门户网站,综合信息追踪

    企业信息追踪与防护: 对于一个公司来说,只要牵扯到公司任一信息,都可以称之为公司的机密文件! 知名门户网站搜索: 新华网:http://www.xinhuanet.com/ 党中央直接部署的,重大影响 ...

  2. 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站

    外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站 之前在CentOS虚拟机上安装了LAMP,搭建起了自己的web服务器,具体流程见: http://www.lin ...

  3. (转) ASP.NET 2.0:使用用户控件和定制的Web部件个人化你的门户网站(二)

    Web部件目录 我们已经见过了如何在 WebPartZones 控件中事先放入Web部件.你还可以用另外一种方法完成这个功能,那就是允许用户在运行时添加新的Web部件.通过使用 CatalogZone ...

  4. 从门户网站看内容传播的开放式革命

    转自:http://column.bokee.com/144367.html 作者:作者: 顺风 在互联网发展初期,内容匮乏成为主要特征,门户网站基本微弱内容建设,传播和媒介特色凸显,雅虎前期目录式搜 ...

  5. vue企业门户网站模板_门户网站建设费用需要多少钱?

    现在互联网发展的速度越来越快了,前几年还是2g时代,现在已经变成5g了,各方面的技术也变得越来越成熟了,南宁网站建设也不例外,越来越多的南宁企业想建设门户网站,而价格是广大用户最关心的问题,那建设一个 ...

  6. 019ssm高校校园门户管理系统高校门户网站社团管理系统

    课题研究现状: 1.课题背景: 所谓门户网站,是指通向某类综合性互联网信息资源并提供有关信息服务的应用系统.门户网站最初提供搜索引擎.目录服务,后来由于市场竞争日益激烈,门户网站不得不快速地拓展各种新 ...

  7. 某政府门户网站维护项目运维方案

    一.1 运维总体原则 一.1.1 整体性原则 我们将综合考虑XXX目前所有门户网站相关应用系统的现状,提出整体的运行维护策略,有效保障系统运行中各环节的不间断运行,并综合使用不同层次的技术手段,为应用 ...

  8. java毕业生设计紫陶文化传播与学习交流网站计算机源码+系统+mysql+调试部署+lw

    java毕业生设计紫陶文化传播与学习交流网站计算机源码+系统+mysql+调试部署+lw java毕业生设计紫陶文化传播与学习交流网站计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目 ...

  9. (附源码)PHP华立学院门户网站 毕业设计 290011

    php华立学院门户网站   摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,华立学院门户网站被 ...

最新文章

  1. 对象名和函数名同名引起的莫名错误
  2. Spring Cloud(一)服务的注册与发现(Eureka)
  3. inovance变频器说明书参数设置_学会西门子与台达变频器通讯,仅需要这4个步骤,你造嘛...
  4. 基于visual Studio2013解决算法导论之007优先队列(堆实现)
  5. C#的四种Timer介绍
  6. C++11中Thread类简单使用的例子
  7. go切片的定义及make使用
  8. NOIP 2013 day1
  9. 企业微信万亿级日志检索系统
  10. 乘风破浪的前端小姐姐,是如何一步步走向成功的?
  11. oo面向对象第一单元总结
  12. 【Breadth-first Search 】103. Binary Tree Zigzag Level Order Traversal
  13. “力挺Java!拒绝Python”9万程序员刷爆朋友圈……
  14. Jmeter操作之跨线程组传递参数
  15. 【C#】图片处理(底片,黑白,锐化,柔化,浮雕,雾化)
  16. windows下安装Keras(CPU版)
  17. win10如何共享打印机_windows1064位系统如何连接window732位共享打印机
  18. robotium和appium区别
  19. 使用计算机组成原理全加器设计,杭电计算机组成原理全加器设计实验1
  20. 怀旧服服务器维护以后精英怪,《魔兽世界》:看不起怀旧服精英怪,一定吃不了兜着走...

热门文章

  1. 一篇很形象的文章,什么是数字签名?
  2. window7下nginx配置文件详解
  3. Android 和 Chrome OS 融合的可能性
  4. configure: error: Please fix the library issues listed above and try again.解决方案
  5. android xml: xliff:g
  6. android 调用系统播放器
  7. 命令行验证apk签名
  8. DLL和COM的发展过程
  9. DSG-Oracle数据库在线迁移服务
  10. 板邓:PHP获取当前页面url地址、参数