Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5442773
  • 博文数量: 348
  • 博客积分: 2173
  • 博客等级: 上尉
  • 技术积分: 7900
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-24 17:26
个人简介

雄关漫道真如铁,而今迈步从头越。

文章存档

2022年(4)

2020年(6)

2019年(2)

2018年(2)

2017年(34)

2016年(49)

2015年(53)

2014年(47)

2013年(72)

2012年(79)

分类: 系统运维

2016-01-26 17:29:53

Tuxedo是一个事务处理(TP)监督器(transaction processing monitor),它管理联机事务处理(OLTP)系统操作的事务。客户通过结构化查询语言(SQL)调用,或其它类型的请求,产生对服务器的请求。这个事务处理监督器确信,正确地进行了修改,以保证数据的完整性。这在一个事务可以改变多个位置的数据库的分布式数据库环境是非常重要的。这个事务处理监督器使用双阶段提交,以保证所有的数据库都已经接收和认可了这些数据的正确性。否则,这个数据库返回它的事务前状态。Tuxedo全称:Tuxedo:Transaction for Unix has been Extended for Distributed Operation。Tuxedo 支持在同一容器中用多种编程语言(C、C++、COBOL、Java、PHP、Python 和 Ruby)编写的应用间提供优化的通信。其提供了通信,事物,安全,容错等基础服务,屏蔽了底层应用细节,应用程序不必从底层开发,以自身的复杂性换取应用程序开发的简单。
一、在介绍Tuxedo原理之前,首先介绍一下几个关键的术语:
1、WTC:WebLogic Tuxedo Connector
2、OLTP: On-Line Transaction Processing 联机事务处理
3、OLAP: On-Line Analytical Processing 联机分析处理
4、ATMI:application-to-Transaction Monitor Interface 应用程序到事务监视器接口
5、DTP:Distributed Transaction Processing分布式事务处理
6、MSSQ:Mutile Server,Singal Queue
二、接下来我们再聊一下tuxedo的三层结构
TUXEDO 采用三层结构的组件软件模型 :
1、Client 为第一逻辑层。实现用户交互和数据表示,向第二层的Server发请求,调用业务逻辑处理服务。
2、Server组件中间层,这些组件由TUXEDO管理,实现业务逻辑服务,接收服务请求,并返回服务结果。
3、第三层为资源管理器,比如像关系数据库。负责管理应用系统的数据资源    
三、Tuxedo的核心子系统如下所示:
1、事务管理器 TM(Transaction Manager)
2、工作站 WorkStation
3、域 Domain
4、队列 Queue
四、关于XA/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方面要做的修改:
1.在ClassPath 中,加入jamti.jar所在的路径。
2.在weblogic的配置文件bdmconfig.xml 中,加入描述两个TDOMAIN的部分
具体调用过程在Tuxedo和weblogic 启动相应服务后,weblogic通过client端掉用相应ejb,再由该ejb调用tuxedo service。
六、Tuxedo中的事务处理相关
1.无论是Client还是Server都可以主动发起一个全局事务。
2.Tuxedo会对一个transaction产生一个全局交易ID(GTRID),这个ID号在所有的交易参与这种共享,并唯一标示这个transaction。
3.Tuxedo通过TLOG,来跟踪一个全局交易。
4.提供通知(notify)RM的方法,使得RM知道自己参加到一个交易中,并lock住相应的记录。
5.Tuxedo作为TM,可以管理两阶段提交(two-phase commit)。使得所有交易参与者一起提交,保持结果的一致性。
七、开发设计注意事项:
1.最好不要使用收到的数据缓冲向其他服务请求,因为该缓冲可能被改变引起错误。
2.所有在服务中分配的数据缓冲,在程序结束时必须全部释放;唯一例外是用在tpreturn()中的返回数据缓冲。
3.服务中的交易不应调用本服务中的交易,因为容易产生死锁。
4. 一个MSSQ集中的服务需要返回时,应有自己的返回队列;否则会与本集中其他服务冲突。(RQADDR = XXXX ,同时REPLYQ = Y)。 


阅读(6568) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~