[原创]XA概念以及TMS的编译配置_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 5245 | 回复: 1   主题: [原创]XA概念以及TMS的编译配置        下一篇 
meng.luo
注册用户
等级:上尉
经验:657
发帖:22
精华:0
注册:1970-1-1
状态:离线
发送短消息息给meng.luo 加好友    发送短消息息给meng.luo 发消息
发表于: IP:您无权察看 2014-5-6 18:00:39 | [全部帖] [楼主帖] 楼主

一、XA概念
           

     要了解XA,先了解分布式事务处理(Distributed Transaction Processing,DTP),DTP指的是在分布式计算环境中,管理和协调多个用户和多个数据库等共享资源之间的交互的过程。DTP是TP的一种形式,在这种形式中,一个事务通常要跨越两个以上的主机和数据库系统,这样的事务被称为分布式事务。目前,大多数平台软件和数据库厂商大的产品都遵循X/OPEN DTP模型中定义的书屋处理规范。所有,这里我以X/OPEN的DTP参考模型为例,去了解分布式事务。模型如图所示:

           

北京联动北方科技有限公司

         

             DTP模型的工作流程如下。①AP(应用程序)通过TM(事务管理器)提供的接口向TM发出请求,以开始一个全局事务,这时TM就会分配一个GTRID来对这个事务进行标识;②AP在事务上下文中使用ESQL来访问RM(资源管理器),以处理业务逻辑;③TM与每一个参与全局事务的RM交换事务信息,当收到AP发出的结束事务的指令时,TM就会通过XA接口向各个RM发出指令,并通过两阶段提交协议来结束全局事务。
而XA就是DTP参考模型中定义接口。RM和TM之间的双向接口!由RM实现,供TM调用。



            XA(Extended Architecture)接口规范为资源管理器(RM)和事务管理器(TM)之间定义了双向的通信接口,它由资源管理器实现,共事务管理器调用。XA接口允许事务管理器通过程序的方式,对参与分布式事务的管理资源器进行管理,它是两阶段提交协议的基础。

           这个接口规定了两套函数。第一套具有xa_*()形式,由资源管理器实现,被事务管理器使用;第二套具有ax_*()形式,由事务管理器实现,被资源管理器使用,如表,列出了标准XA函数以及功能。

          

北京联动北方科技有限公司

二、TMS的编译配置

       提到TMS的编译配置,当然得知道分布式系统在TUXEDO系统中是如何实现的呢?,如图下图所示,是一个TUXEDO系统的事务模型!

      

       TUXEDO的一个核心是TPM。TPM接受AP发出的XATMI指令,并通过一组TMS管理着全局事务,执行两个阶段提交协议。

       
北京联动北方科技有限公司

               

              在上图中,客户机连接到TUXEDO之后,通过XATMI指令来初始化一个全局事务。当TPM收到这个指令后,就会在公告板中创建一个事务,并向GTT中插入一个条目,然后分配一个GIRID来对它进行跟踪。在全局事务上下文中,客户机通过ATMI指令向Server1和Server2发出了调用请求,这两个服务器又使用ESQL分别对Oracle和Informix两个数据库进行了访问。两个事务管理器TMS_ORA和TMS_INF通过XID来对数据库事务分支。TMS_ORA作为事务协调器,使用TLOG来记录全局事务的状态。

             TUXEDO的事务管理器是由TMS完成的,TMS是一组独立于业务进程的特殊管理进程,它不仅可以把各种RM接入到TUXEDO的��布式计算环境钟来,可能代表TPM对RM执行事务跟踪和两阶段提交。TMS与进程组是紧密关联的,如下图所示。当进程组被激活时,与它关联的TMS就会自动启动多个实例, 这些实例或执行tpopen(3c)打开和RM的连接,并且从一个消息队列中等待着TPM发出的指令。

            
北京联动北方科技有限公司

            了解了TUXEDO对分布式的实现之后,那么TUXEDO的事务配置是如何配的呢?TUXEDO提供了一些参数,可以对事务系统的行为进行控制。在*RESOURCES段中可以配置的事务参数有MAXGTT和CMTRET。

MAXGTT 100


            MAXGTT用于设置在同一台主机上,同一时刻最多可以存在的全局事务数,最小值可取0,最大值可取32768,默认值为100,0表示不支持全局事务。如果在*MACHIENS段中也设置了这个参数,它将覆盖*RESOURCES中的取值。

CMTRET COMPLETE


           CMTRET用于为事务提交控制参数TP_COMMIT_CONTROL设置初始值,用于控制事务在两阶段提交过程中的行为。CMTRET可取值LOGGED和COMPLETE,默认值是COMPLETE。取值LOGGED相当于使用tpscmt(3c)把TP_COMMIT_CONTROL设置为TP_CMT_LOGGED,表示应用程序发出的事务提交请求在2PC的第一个阶段结之后就会返回。

           在*MACHINES段中可以设置的参数有TLOGNAME、TLOGDEVICE 和 TLOGSIZE��

TLOGNAME、TLOGDEVICE 、 TLOGSIZE。


         TLOGNAME用于指定事务在设备上的文件名,通常是TLOG;TLOGDEVICE用于指定事务设备的绝对路径名;TLOGSIZE用于指定事务设备占用的磁盘块或分页数,一个分页的大小为512KB,最小可取0,最大值可取2048,默认值为100

          在*GROUPS段中可以设置的事务参数有TMSNAME、TMSCOUNT、OPENINFO和CLOSEINFO。

TMSNAME、TMSCOUNT、OPENINFO、CLOSEINFO


         TMSNAME用于指定和一个进程组关联的事务管理服务器;TMSCOUNT用于指定TMS的数量,取值必须大于2;OPENINFO用于指定打开RM所必须的参数,CLOSEINFO用于指定关闭RM必须的参数,一般的RM通常不要求提供CLOSEINFO。

         一个进程组同时只能和一个TMS关联,下面的例子定义了两个进程组GRP_ORA和GRP_INF,他们分别于Oracle和INFORMIX数据库关联:

*GROUPS
GRP_ORA          LIMID=SITE1   GRPNO=1
TMSNAME=TMS_ORA             TMSCOUNT=2
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=120+MaxCur=5+LogDir=."
GRP_INF            LMID=SITE1     GRPNO=2
TMSNAME=TMS_INF                TMSCOUNT=2
OPENINFO="INFORMIX-Online:demo"


           在*SERVICES段中可以设置的事务参数有AUTOTRAN和TRANSTIME

AUTOTRAN=N


           用于指定当前服务是否应该在事务环境中执行,可取Y或N。默认值为N

           把AUTOTRAN设置为Y,即如果客户机在事务上下文中调用 服务时,服务队RM的操作会自动纳入到客户机的事务上下文中;如果客户机没有在事务上下文中调用服务,则TUXEDO的事务系统会自动启动一个事务,并让服务在里面执行。

           把AUTOTRAN设置为N,即如果客户机在事物上下文中调用服务时,服务队RM的操作会自动纳入客户机的事务;如果客户机没有在事务上下文中调用服务,那么服务将在非事务环境中被调用。

TRANSTIME=30


          以秒为单位,指定自动事务的超时时间,取值在0~MAXLONG之间。如果不指定,默认值为30秒,0表示事务超时由当期那主机支持的最大超时决定。




赞(0)    操作        顶端 
koei
版主
等级:大校
经验:4186
发帖:7
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei 加好友    发送短消息息给koei 发消息
发表于: IP:您无权察看 2014-5-7 8:05:30 | [全部帖] [楼主帖] 2  楼

文中提到的TMS_ORA、TMS_INF之类的,都是由RM配置文件,手工编译出来的;

RM的配置方法,及buildtms的命令,楼主可以稍微介绍下么?



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论