《叱咤风云tuxedo企业级运维实战》如何用好全局事务

《叱咤风云tuxedo企业级运维实战》如何用好全局事务

ID:34421009

大小:155.50 KB

页数:7页

时间:2019-03-06

《叱咤风云tuxedo企业级运维实战》如何用好全局事务_第1页
《叱咤风云tuxedo企业级运维实战》如何用好全局事务_第2页
《叱咤风云tuxedo企业级运维实战》如何用好全局事务_第3页
《叱咤风云tuxedo企业级运维实战》如何用好全局事务_第4页
《叱咤风云tuxedo企业级运维实战》如何用好全局事务_第5页
资源描述:

《《叱咤风云tuxedo企业级运维实战》如何用好全局事务》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、125第9章如何用好全局事务第9章如何用好全局事务9.1什么是全局事务全局事务是由资源管理器管理和协调的事务,可以跨越多个数据库和进程。事务管理器一般使用XA二阶段提交协议与“企业信息系统(EIS)”或数据库进行交互。也就是当一个事务需要跨越多个数据库时,需要使用全局事务。例如,一个事务中可能更新几个不同的数据库。对数据库的操作发生在系统的各处,但必须全部被提交或回滚。此时,一个数据库对自己内部所做操作的提交不仅依赖本身操作是否成功,还要依赖与全局事务相关的其他数据库的操作是否成功,如果任一数据库的任一操作失败,则参与此事务的所有数据库所做的所有操作都必须回滚。在一

2、个涉及多个数据库的全局事务中,为保证全局事务的完整性,由交易中间件控制数据库做两阶段提交是必要的。但典型的两阶段提交,对数据库来说事务从开始到结束(提交或回滚)时间相对较长,在事务处理期间数据库使用的资源(如逻辑日志、各种锁),直到事务结束时才会释放。因此,使用典型的两阶段提交相对来说会占用更多的资源,如果网络条件不好,如低速网、网络颠簸频繁,情况会更为严重。9.2本地事务的优缺点本地事务容易使用,但也有明显的缺点:它们不能用于多个事务性资源。例如,使用JDBC连接事务管理的代码不能用于全局的JTA事务中。另一个缺点是局部事务趋向于侵入式的编程模型。9.3Tuxed

3、o对事务的控制与管理当客户端连接到Tuxedo并创建一个全局事务时,TM(TransactionManager,事务管理器)就会在公告板(BB)里面创建一个事务,由TMS向GTT(GlobalTransactionTable,全局事务表,里面包含当前事务的状态信息)中插入一个条目,然后分配一个GTRID(GlobalTransactionIdentifier,全局事务标识符)来对该事务进行跟踪。Tuxedo的事务管理由TMS完成,TMS把各种RM接入到Tuxedo中的分布式计算中来,并对RM中执行的事务进行跟踪和两阶段提交。Tuxedo对事务的管理工作主要包括创建T

4、MS、创建TLOG125第9章如何用好全局事务、运行时事务的监控和迁移。每一个在Tuxedo中用到的RM,都需要创建一个专用的TMS,否则无法在UBBCONFIG文件中调用。创建TMS的命令为:buildtms。这个命令需要从RM文件中读取信息,包括RM名、XASwitch名,以及XA支持库。为了恢复全局事务,TMS使用TLOG来记录事务日志。在每台Tuxedo主机上,只需创建一个TLOG文件,它就会被这台主机上所有的TMS实例共享使用。如果一个全局事务还没有完成,就会在TLOG文件中占用一个分页的空间(512KB),事务完成之后,它在TLOG中的记录被自动删除。在

5、全局事务中,如果一个事务在提交前失败,在事务超时以后,TMS会把它的状态从TMGACTIVE改变为TMGABORTONLY,在Tuxedo下一次进行健康检查时,会把它从GTT中清除。另外,当Tuxedo检测到只有一个RM参与到分布式事务中时,TMS则会略去第一阶段时的事务征集过程,直接进行事务的提交或者回滚。9.4常用事务相关的函数为了界定全局事务,Tuxedo除了支持标准的TX接口外,还提供了一套自己的事务接口,其中基于TX接口的包括以下几种。1.tpopen()这个函数被服务进程和TMS(事务管理器)调用,用于建立和RM(资源管理器,一般为数据库)的连接。连接信

6、息由服务进程组的OPENINFO参数提供。服务进程和TMS在启动时,通常会自动回调tpsvrinit()函数,tpopen()通常在tpsvrinit()函数中被调用。连接失败时返回值为–1,并把错误号保存在全局变量tperrno中。2.tpclose()这个函数在服务进程和TMS的析构函数tpsvrdone(3c)中被隐含调用,用于关闭一个RM的连接,关闭信息由进程组的CLOSEINFO参数提供。3.tpbegin()该函数的功能是开始一个全局事务,并分配一个GTRID(全局事务标识符)来对它进行跟踪。4.tpcommit()该函数的功能是提交一个全局事务,提交成

7、功时返回零,失败时返回–1。提交失败时,可能把tperrno设置为TPETIME、TPEABORT、TPEPROTO、TPEHAZARD、TPEHEURISTIC或TPEINVAL。125第9章如何用好全局事务TPETIME表示事务已经超时,状态未知,可能是已经提交,也可能是已经回滚。TPEABORT表示某个RM不能提交它的局部事务。TPEPROTO表示协议错误,即调用点不在一个有效的事物上下文中,如事务的提交者不是事务的初始者或者提交的事务根本不存在。TPEHAZARD表示由于某些失败的因素,全局事务已经启发式完成。TPEHEURISTIC表示由于启发式的决策

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。