`
wei5201
  • 浏览: 185139 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于跨应用事务

 
阅读更多
在项目中对于事务控制有如下3种:
1.简单的单项目,单服务,单数据源事务控制,如图:



2.单项目,单服务,多数据源事务控制,如图:


这种方式如果我们使用了spring容器的话,那么jta的支持会很好的解决此类事务问题.

3.多项目,多服务,多数据源间的事务控制,如图:


这个需要支持分布式事务,如果采用的是ejb的话,能够得到很好的解决,大家统统在以个事务中. 但是如果是项目采用的是spring作为容器或者多服务组件是以webService的方式调用的话,一般采用的事务处理方式是这样的,让我们看个实例:

假设核心系统中提供了转账服务,而自动柜员机(毫无疑问相对核心系统来讲是一个外围应用)和个人网银(也是一个外围应用)都需要提供转账服务,开发人员当然可以在自动柜员机和个人网银这两个应用中分别根据核心系统中转账的逻辑重新实现一遍转账逻辑,但这样做实在是挫了,如果转账逻辑有变动,那么则需要变动核心系统、自动柜员机和个人网银3个应用,这当然不是我们想要的;那我们再进一步思考下,既然核心系统已经提供了转账服务,那自动柜员机系统和个人网银系统就直接调用转账服务就好了,对,这样的方案解决了之前维护复杂的问题,但其他问题接踵而来,可能自动柜员机在转账过程中,除了要调用核心系统的转账服务外,还需要完成自身的一些操作,比如记录ATM操作日志等,那如果调用转账服务成功,而记录ATM操作日志失败,那这种情况下该怎么处理?首先可用从ATM操作角度,必须告诉客户这次ATM转账操作失败了(因为ATM操作日志没有记录),但调用核心系统的转账服务已经成功,也就意味着资金已经从A账户流转到B账户了,一个选择就是做一个反操作(事务补偿),从B账户转账同样的金额给A账户,这个选择有两个有待思考的地方:如果反操作失败怎么办?就算反操作成功但有了两笔转账的操作记录,如果将操作记录暴露给客户查询,那客户肯定会投诉,至少不爽吧;另一个选择那就是将客户操作ATM机上的转账放入一个事务中(也就是将核心系统调用转账服务和ATM记录操作日志放入同一个事务中处理),这样如果全部成功则一起提交,有一个失败则全部回退,可以解决上面提到的所有的麻烦。
最后一个方案在相比下效果是最好的,如果核心系统提供的转账服务是EJB服务,那么可以按照最后一个方案来实现(具体可以参考J2EE分布式事务管理中的跨服务器事务管理);如果核心系统提供的转账服务是web service服务(按照soap协议),在网上看到过有webservice的事务管理规范,可以让webservice之间的调用纳入全局事务的范畴,但目前不清楚was是否实现了对此的支持;如果是以一个servlet或网页的形式提供的转账服务,那么基本可以确定无法使用最后一个方案,根据实际情况再做选择,或许事务补偿的做法会是一个不错的选择。


  • 大小: 15 KB
  • 大小: 22.7 KB
  • 大小: 41.8 KB
分享到:
评论

相关推荐

    多数据源分布式事务管理调研报告.docx

    完成某一个业务功能需要横跨多个服务,操作多个数据库。这就涉及到到了分布式事务,用需要操作的资源位于多个资源服务器上,而应用需要...典型的分布式事务场景有跨库事务、分库分表、SOA服务化下的分布式事务管理。

    log_weasel:具有共享事务ID的Instrument Rails和Resque可以跟踪跨应用程序和应用程序实例的工作单元的执行

    具有共享事务ID的Instrument Rails和Resque可以跨应用程序和应用程序实例跟踪工作单元的执行。 如果您正在使用类的系统来管理许多应用程序和应用程序实例中的日志文件,这将特别方便。 安装 将log_weasel添加到您的...

    COM+事务处理

    这样可使 .NET 应用程序运行跨多个资源结合不同操作(例如将定单插入SQL Server 数据库、将消息写入 Microsoft 消息队列(MSMQ)队列,以及从 Oracle 数据库检索数据)的事务。 要实现COM+事务处理的类则必须继承...

    Java收银机源码-themis:Themis基于google的percolator在HBase上提供跨行/跨表事务

    Themis基于HBase的单行事务,通过两阶段提交和冲突解决来保证跨行事务的ACID特性。 Themis 依赖于提供全局严格增量时间戳,它定义了事务的全局顺序,使 Themis 可以在给定时间戳之前读取数据库快照。 Themis 采用 ...

    ASP手册中文版

    关于 ASP 应用程序:解释什么是 ASP 应用程序。 管理应用程序:解释如何启动和停止应用程序并介绍部分应用程序管理服务。 管理会话:解释如何保存用户信息。 维护 ASP 应用程序的安全:解释如何通过验证...

    第01节:基于事务同时执行多个对象的增删改源代码.rar

    第01节:基于事务同时执行多个对象的增删改.rar

    分表分库在实际应用中的实践

    [分布式事务]:基于支持两阶段提交协议的数据库,提供的跨应用及数据库的解决数据一致性解决方案。 [幂等]:为了保证保证数据一致性,在跨服务或者服务内部进行数据交换时,通过交换唯一ID来保证数据一致的机制。

    基于CH395的跨平台远程文件管理系统

    基于FTP应用协议,通过CH395实现跨平台远程文件管理系统。CH563作为主控制芯片,负责处理所有的事务;CH395作为以太网协议栈芯片,提供以太网数据传输通道。该系统硬件简单,遵循熟悉的文件操作方式,很好地实现了...

    ThinkPHP 3.2.2实现事务操作的方法

    ThinkPHP提供了单数据库的事务支持,如果要在应用逻辑中使用事务,可以参考下面的方法: 启动事务: $User->startTrans() 提交事务: $User->commit() 事务回滚: $User->rollback() 事务是针对数据库本身的,...

    电力企业基于RPA技术助力财务智能化应用实践

    “云大物移智(云计算、大数据、物联网、移动互联网、智慧城市)”的新技术时代背景下,财务机器人技术作为人工智能领域的重要应用,已经成熟应用,可以将财务人员从大量的、重复的、有规则的事务性工作中解放出来,...

    数据库:课程设计-跨银行服务与管理系统

    根据你所选定的应用场景,补充完善系统的需求、功能、界面、数据模型、系统架构、部署方案等,完善作业#6中完成的需求规格说明书和系统设计规格说明。 二、系统详细设计与实现 1. 系统数据模型详细设计 针对系统...

    律师事务所知识管理系统

    弘康知识管理软件系统采用IBM的Lotus Notes/Domino平台,基于跨平台Web技术开发,易学易用、操作简单。该系统可使事务所内律师业务实现计算机操作与管理,加速数据采集、处理、 分析、输出,帮助律师查看、分析、...

    基于JTA的跨数据库分布式事务的实现 (2012年)

    应用系统开发中,事务是一个不可或缺的组件模型,保证了用户操作的ACID属性。对于跨数据库的大型应用,必须使用分布式事务。JTA为J2EE平台提供了分布式事务服务,讨论JTA的体系架构,通过示例介绍其实现机制。

    设计数据密集型应用

    第二部分,我们将从单机的数据存储转向跨机器的分布式系统,这是扩展性的重要一步,但随之而来的是各种挑战。所以将依次讨论数据远程复制(第5章)、数据分区(第6章)以及事务(第7章)。接下来的第8章包括分布式...

    meteor-transactions:Meteor + Mongo 的应用级交易

    事务可以是对单个文档的单个操作(插入、更新或删除),也可以是跨不同文档的一组不同操作。 一个示例应用程序。 示例应用程序的。快速开始 meteor add babrahams:transactions该包公开了一个名为tx的对象,它具有...

    解决分布式事务详细文档

    主要应用在两个服务器之间数据传输 两个系统之间的数据传输! 最便捷,最全面的技术文档,值得珍藏哦!呵呵

    分布式系统中Java后端开发技术及其应用实践.pdf

    复杂事件处理和分布式事务管理等方面[1]。Java平台以 其成熟的生态系统、跨平台的移植性、丰富的开源框架 和库以及稳定的性能,为分布式系统的开发提供了坚实 的基础[2]。深入探讨Java后端开发技术在分布式系统中 的...

    毕业设计,基于SpringBoot+Vue+MySql开发的前后端分离的电商应用购物网站系统,含完整源码,数据库脚本,视频教程

    本电商应用系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此电商应用系统使用跨平台的可开发大型商业...

    tuxedo8.1 完全手册

    tuxedo8.1 完全手册,请收藏吧 TUXEDO为交易中间件。  1.2 TUXEDO是什么  TUXEDO名字的由来:  Transaction for UNIX has been ...它能够使事务在全球范围内跨任何系统,从面向客户的关键任务应用延伸到后台处理。

    毕业设计.zipjava本论文主要研究JSP技术以及JSP技术实现基于Web的三层体系结构的应用,实现了动态网页对数据库的查询、

    目的是应用计算机网络、数据库、Internet技术、以Tomcat为服务器,JSP、JAVA作为主要开发工具,实现跨平台、跨网络、统一界面、易于扩展和维护的大红鹰班主任管理系统。 B/S结构,即Browser/Server(浏览器/服务器...

Global site tag (gtag.js) - Google Analytics