由JTA分布式事务Timeout值引发的锁定及解决.docxVIP

由JTA分布式事务Timeout值引发的锁定及解决.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
由JTA分布式事务Timeout值引发的锁定及解决

由JTA分布式事务Timeout值引发的锁定及解决分布式系统较传统的单点系统,具有较强的可拓展性和可用性,是目前大型应用系统普遍采用的设计模式。但是较传统系统,分布式系统无论从复杂性还是出现故障的机率看,都是远远超过单点系统。当我们选择开发分布式系统的时候,就意味要倾注更多的精力。?1、分布式事务?分布式事务是分布式系统的一个重要研究范畴。在Oracle中,采用“二阶段提交”(Two phases submit)作为分布式事务的处理模型。简单的说,当一个事务涉及操作对象分布在不同的数据库上。传统的锁机制和事务模型都是建立在单实例数据库基础上的。分布式事务要保证各个节点上事务都成功的前提下,才能确定事务提交完成。只要有一个事务没有完成,所有节点的事务都要进行rollback。?分布式事务一个最难处理的问题,就是通信带来的timeout取值。分布式事务要伴随着大量的节点间通信交互,确定其他工作节点是否事务是否完成。这种等待是很大的问题,因为节点不知道其他节点不响应是“因为节点已经死亡,还是节点网络繁忙”。所以timeout设置就是一个很大的问题。?这种问题的极端体现就是,一个事务中涉及到多个节点内容。当一个节点锁住一些对象,开启了事务过程,就不断地等待其他节点的响应。而由于各种原因,没有相应到来。这样就需要进行事务回收问题。?通常情况下,Oracle是可以自动处理这种问题的。在一个分布式事务中,有三个层面的timeout参数解决分布式事务锁。?ü?全局事务timeout(Global Transaction Timeout):在这种方式下,Oracle是不负责分布式事务管理的。Oracle将事务管理权交付给应用处理,如JTA事务容器。这种方式的事务管理,完全取决于应用程序配置内容。比如在JDBC和JTA中,有专门的Time out参数;ü?Session Timeout:指定了一个事务可以持续的最长时间,超过了这个时间就会被自动回收中断。一个XA事务与Oracle Process的关系是比较松散,可以进行detach操作。当一个分布式事务失败的时候,Oracle可以通过时间设置情况,将XA事务detach from the process;ü?Oracle内部的distributed_lock_timeout限制住一个分布式事务可以锁住对象的最长时间。该参数通常默认设置一个很大的取值;?上述的三个timeout中,大小配置顺序通常是:global transaction timeout session timeout distributed_lock_timeout。?很多时候,配置过大的timeout值,可能会引起一些问题和对象锁定。通过控制台监控分布式事务Server》iomAppSvrA1》Monitoring?》JTA5:16001/console/actions/mbean/ListMBeansAction?reloadNav=falseMBeanClassName=weblogic.management.runtime.TransactionNameRuntimeMBeanMBeanClass=weblogic.management.runtime.TransactionNameRuntimeMBeanscopeMBean=iomAppDomain%3AName%3DiomAppSvrA1%2CType%3DServerMonitor all Transactions by Name...?5:16001/console/actions/mbean/ListMBeansAction?reloadNav=falseMBeanClassName=weblogic.management.runtime.TransactionResourceRuntimeMBeanMBeanClass=weblogic.management.runtime.TransactionResourceRuntimeMBeanscopeMBean=iomAppDomain%3AName%3DiomAppSvrA1%2CType%3DServerMonitor all Transactions by Resource...?5:16001/console/actions/mbean/ListMBeansAction?reloadNav=falseMBeanClassName=weblogic.management.runtime.JTATransactionMBeanClass=weblogic.management.runtime.JTATransactionscopeMBean=iomAppDomain%3AName%3DiomAppSvrA1

文档评论(0)

didala + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档