一种应用于异构系统的事务补偿方法和装置与流程

文档序号:16061121发布日期:2018-11-24 12:11阅读:160来源:国知局

本发明涉及计算机技术领域,尤其涉及一种应用于异构系统的事务补偿方法和装置。

背景技术

异构系统是由多个不同种类的企业应用平台或系统通过网络连接而成的计算机系统,主要体现在架构、数据库、服务器等方面的不同。随着企业信息化建设的不断深入,总是会面临异构系统之间的通信、集成与整合的需求,而从业务分析、成本效益的角度来讲,企业更希望在系统架构中尽可能地形成对原有系统的重用,而原有系统的重用势必需要解决在异构系统环境下保持事务一致性的问题。

目前解决异构系统环境下事务一致性问题的最典型的方法是采取集中式事务管理器的基本设计模式。

集中式事务管理器应用的是两阶段提交技术。要实现两阶段提交,首先全局事务的数据源必须支持xa特性,也就是说如果某个业务流程处于一个全局事务内,而且对多个系统有事务操作(如资源变更),则需要实现和配置所涉及系统的数据源(事务适配器、jms或jdbc连接池)以支持xa,而且xa协议的系统开销相当大。并且,集中式事务管理器在事务管理的过程中,需要在多个节点之间进行协调,而各节点对锁资源的释放都必须等到事务最终提交后,事务执行时间延长也就意味着锁资源发生冲突的概率增加,当事务的并发量达到一定数量时,就会出现大量事务积压甚至出现死锁,系统性能就会严重下滑。

因此,如何高效地实现异构系统的事务补偿,减小系统升级改造成本,减少系统性能损失成为当前亟待解决的问题。



技术实现要素:

有鉴于此,本发明提供一种应用于异构系统的事务补偿方法和装置,能够高效地实现异构系统的事务补偿,解决异构系统环境下保持事务一致性的问题,同时减小系统升级改造成本,以及减少系统性能损失。技术方案如下:

基于本发明的一方面,本发明提供一种应用于异构系统的事务补偿方法,所述方法包括:

接收应用发起方发起的服务请求;

记录与所述服务请求对应的关键信息;

在响应所述服务请求的过程中确定发生异常时,确定所述异常为运行时异常还是非运行时异常;

对于运行时异常,获取记录的与所述服务请求对应的关键信息,并依据所述记录的与所述服务请求对应的关键信息进行实时的事务补偿;

对于非运行时异常,获取与所述服务请求对应的服务应答方中的数据状态,并依据所述数据状态进行事务补偿。

可选地,在响应所述服务请求的过程中确定发生异常时,确定所述异常为运行时异常还是非运行时异常包括:

在响应所述服务请求的过程中捕获到异常信息时,确定发生异常,并确定所述异常为运行时异常;

在响应所述服务请求的过程中未接收到所述服务应答方反馈的信息或链接超时中断,但接收到所述应用发起方再次发起的所述服务请求时,确定发生异常,并确定所述异常为非运行时异常。

可选地,所述运行时异常包括应用操作失败异常、数据库操作错误异常或io异常。

可选地,所述对于非运行时异常,获取与所述服务请求对应的服务应答方中的数据状态,并依据所述数据状态进行事务补偿包括:

调用所述服务应答方的接口,获取所述服务应答方中的数据状态;

依据所述数据状态,调用所述服务应答方的相应冲正交易进行事务补偿;

待事务补偿完成后,向所述服务应答方再次发起所述服务请求。

可选地,所述方法还包括:

当向所述服务应答方再次发起所述服务请求后,确定发生运行时异常时,获取记录的与所述服务请求对应的关键信息,并依据所述记录的与所述服务请求对应的关键信息进行实时的事务补偿。

可选地,所述获取记录的与所述服务请求对应的关键信息,并依据所述记录的与所述服务请求对应的关键信息进行实时的事务补偿包括:

获取记录的与所述服务请求对应的关键信息;

根据记录的正向交易顺序,调用所述服务应答方的相应冲正交易进行实时的事务补偿。

基于本发明的另一方面,本发明还提供一种应用于异构系统的事务补偿装置,所述装置包括:

接收单元,用于接收应用发起方发起的服务请求;

缓存单元,用于记录与所述服务请求对应的关键信息;

异常监测确定单元,用于在响应所述服务请求的过程中确定发生异常时,确定所述异常为运行时异常还是非运行时异常;

运行时异常处理单元,用于对于运行时异常,获取记录的与所述服务请求对应的关键信息,并依据所述记录的与所述服务请求对应的关键信息进行实时的事务补偿;

非运行时异常处理单元,用于对于非运行时异常,获取与所述服务请求对应的服务应答方中的数据状态,并依据所述数据状态进行事务补偿。

可选地,所述异常监测确定单元具体用于:

在响应所述服务请求的过程中捕获到异常信息时,确定发生异常,并确定所述异常为运行时异常;

在响应所述服务请求的过程中所述接收单元未接收到所述服务应答方反馈的信息或链接超时中断,但接收到所述应用发起方再次发起的所述服务请求时,确定发生异常,并确定所述异常为非运行时异常。

可选地,所述运行时异常包括应用操作失败异常、数据库操作错误异常或io异常。

可选地,所述非运行时异常处理单元包括:

数据状态获取子单元,用于调用所述服务应答方的接口,获取所述服务应答方中的数据状态;

第一事务补偿处理子单元,用于依据所述数据状态,调用所述服务应答方的相应冲正交易进行事务补偿;

发送子单元,用于待事务补偿完成后,向所述服务应答方再次发起所述服务请求。

可选地,所述运行时异常处理单元还用于:

当所述非运行时异常处理单元向所述服务应答方再次发起所述服务请求后,所述异常监测确定单元确定发生运行时异常时,获取记录的与所述服务请求对应的关键信息,并依据所述记录的与所述服务请求对应的关键信息进行实时的事务补偿。

可选地,所述运行时异常处理单元包括:

关键信息获取子单元,用于获取记录的与所述服务请求对应的关键信息;

第二事务补偿处理子单元,用于根据记录的正向交易顺序,调用所述服务应答方的相应冲正交易进行实时的事务补偿。

本发明提供的应用于异构系统的事务补偿方法和装置中,在接收到应用发起方发起的服务请求后,首先会记录与服务请求对应的关键信息,通过对关键信息的读取,能够识别所有跨系统访问的交易场景。本发明实时监测异常的发生,并在监测到异常发生后,确定所述异常为运行时异常还是非运行时异常。对于运行时异常,本发明获取记录的与该服务请求对应的关键信息,并依据该关键信息进行实时的事务补偿,有效解决了应用操作失败异常、数据库操作错误异常、io异常等各种运行时异常导致的异构系统环境下事务不一致性的问题;对于非运行时异常,本发明获取与该服务请求对应的服务应答方中的数据状态,并依据所述数据状态进行事务补偿,有效解决了异构系统环境下由于网络异常、宕机等原因引起的事务不一致问题。本发明将异常分为运行时异常和非运行时异常,并针对这两种异常分别提出了两种对应的事务补偿方法,能够高效地实现异构系统的事务补偿,解决了异构系统环境下保持事务一致性的问题。

且,本发明提供的应用于异构系统的事务补偿方法和装置可以复用现有系统资源,在现有企业各应用系统资源重用的基础上,尽可能地减小系统升级改造成本、缩短研发周期、保障了系统的稳定运行,实现跨应用系统数据访问过程中保持事务一致。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明中跨系统服务访问过程流程图;

图2为本发明提供的一种应用于异构系统的事务补偿方法的流程图;

图3为本发明中跨系统服务访问控制的异构系统结构图;

图4为本发明中运行时异常的处理方法逻辑图;

图5为本发明中非运行时异常的处理方法逻辑图;

图6为本发明提供的一种应用于异构系统的事务补偿装置的结构示意图;

图7为本发明中非运行时异常处理单元的结构示意图;

图8为本发明中运行时异常处理单元的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

异构系统中,经常出现前端应用发起方在一次服务请求(即一个事务)中,需要调用多个后端服务器的场景,如图1所示:

(1)前端应用发起方向后端服务应答方b发起任务提交请求,后端服务应答方b返回成功信息或者失败信息给前端应用发起方;

(2)前端应用发起方收到成功信息后,再继续调用后端服务应答方a更新数据,并在后端服务应答方a返回成功信息后,再继续调用其它后端服务应答方,直到本次事务执行完成。

上述跨系统访问的过程中,如果后端服务应答方b发生异常,则后端服务应答方a不会被调用,而如果后端服务应答方a或者后续其它后端服务应答方发生异常,就必须通过异常处理机制,对整个事务进行补偿,来保证数据一致性。

事务补偿即在事务链中的任何一个正向交易(亦称正向事务操作),都必须存在一个完全符合回滚规则的冲正交易(亦称可逆事务操作)。当发起方和应答方出现数据(即事务)不一致时,利用冲正交易来补偿事务,能够最终实现数据的一致。

如图2所示,其示出了本发明提供的一种应用于异构系统的事务补偿方法,该方法可以具体由本发明提供的一种应用于异构系统的事务补偿装置来执行,本发明提供的应用于异构系统的事务补偿装置位于应用发起方与服务应答方之间,也可具体设置在前端应用服务器中,关于其具体组成结构,会在后文中详细描述,发明人在此不再赘述。本发明提供的应用于异构系统的事务补偿方法可以包括:

步骤101,接收应用发起方发起的服务请求。

本发明中应用发起方向服务应答方发起的服务请求会先发送至事务补偿装置,由事务补偿装置接收该应用发起方发起的服务请求。

结合图3所示,前端应用服务器启动后,异构系统会将异常监测服务加载到前端应用服务器的内存中,使得事务补偿装置能够实现对前端应用服务器发送的服务请求进行接收、记录,并能够自动捕获后端服务器返回的异常信息。

步骤102,记录与所述服务请求对应的关键信息。

事务补偿装置接收到应用发起方发起的服务请求后,首先记录与该服务请求对应的关键信息。具体地,可以将与该服务请求对应的关键信息缓存在线程中。其中关键信息可以包括交易号、交易申请输入数据以及用于唯一标示事务状态的数据。其中用于唯一标示事务状态的数据例如包括任务编号、环节、状态、操作类型等。

步骤103,在响应所述服务请求的过程中确定发生异常时,确定所述异常为运行时异常还是非运行时异常。

在响应所述服务请求的过程中,事务补偿装置实时监测是否发生异常,如果监测到异常时,首先确定该异常为运行时异常还是非运行时异常。

本发明中,运行时异常指的是能够被事务补偿装置自动捕获并实时处理的异常,例如包括应用操作失败异常、数据库操作错误异常、io异常等。

非运行时异常指的是由于系统故障、宕机、网络中断等原因,前端应用服务器提交正向交易后,未收到后端服务器反馈的任何信息或者链接超时中断,而又再次接收到前端应用服务器再次提交的正向交易的异常。

基于此,本发明在响应所述服务请求的过程中如果捕获到异常信息,则确定发生异常,并确定该异常为运行时异常;在响应所述服务请求的过程中未接收到服务应答方反馈的信息或链接超时中断,但接收到应用发起方再次发起的所述服务请求时,确定发生异常,并确定所述异常为非运行时异常。

步骤104,对于运行时异常,获取记录的与所述服务请求对应的关键信息,并依据所述记录的与所述服务请求对应的关键信息进行实时的事务补偿。

具体地,本发明首先获取记录的与所述服务请求对应的关键信息,进而根据记录的正向交易顺序,调用服务应答方的相应冲正交易进行实时的事务补偿。结合图4所示,其中①:应用发起方向服务应答方发起服务请求(即提交正向交易),并利用线程缓存服务请求对应的关键信息;②:事务补偿装置监测到异常并确定该异常为运行时异常时,将其发送至事务补偿装置中用于处理运行时异常的运行时异常处理单元;③:事务补偿装置从线程缓存中查询并获取与服务请求对应的关键信息;④:根据记录的正向交易顺序,调用服务应答方的相应冲正交易进行实时的事务补偿。由此,运行时异常被正确处理,保证了异构系统下事务/数据的一致性。

步骤105,对于非运行时异常,获取与所述服务请求对应的服务应答方中的数据状态,并依据所述数据状态进行事务补偿。

本发明中,非运行时异常发生后,多个服务应答方中记录的信息可能存在不一致,当应用发起方再次发起服务请求时,由于发起方发送的关键信息与服务应答方的数据库中记录的数据不一致,服务应答方检测到数据错误并向事务补偿装置反馈异常信息。

事务补偿装置接收到该异常信息后首先调用服务应答方的接口,获取并查询服务应答方中的数据状态,从而自动分析异常发生时的系统场景。进一步,事务补偿装置根据数据状态设计不同分支,调用服务应答方的相应冲正交易进行事务补偿,拯救后端服务器数据,使其和前端发送方服务器数据一致。在待事务补偿完成后,事务补偿装置执行第二次的正向交易调用,即向服务应答方再次发起所述服务请求,以保证异构系统下事务/数据的一致性。

此外进一步的,如果事务补偿装置执行第二次的正向交易调用时再次发生运行时异常,则事务补偿装置则继续采用步骤104的方法进行事务补偿,以异构系统下事务/数据的一致性。

具体可结合图5所示,其中①:应用发起方向服务应答方发起服务请求(即提交正向交易),并利用线程缓存服务请求对应的关键信息;②:事务补偿装置监测到异常并确定该异常为非运行时异常时,将其发送至事务补偿装置中用于处理非运行时异常的非运行时异常处理单元;③:事务补偿装置调用服务应答方接口,查询当前数据状态,自动分析异常发生时的系统场景;④:调用服务应答方的相应冲正交易进行事务补偿;⑤数据处理完成后,事务补偿装置执行第二次的正向交易调用。

本发明针对跨应用系统访问发生的非运行时异常,在前端应用发起方再次发起服务请求后,通过二次事务补偿方法,可以较大范围满足多应用系统间互联时的数据一致性要求,实现了跨应用系统访问事务的一致性。

因此应用本发明提供的应用于异构系统的事务补偿方法,在接收到应用发起方发起的服务请求后,首先会记录与服务请求对应的关键信息,通过对关键信息的读取,能够识别所有跨系统访问的交易场景。本发明实时监测异常的发生,并在监测到异常发生后,确定所述异常为运行时异常还是非运行时异常。对于运行时异常,本发明获取记录的与该服务请求对应的关键信息,并依据该关键信息进行实时的事务补偿,有效解决了应用操作失败异常、数据库操作错误异常、io异常等各种运行时异常导致的异构系统环境下事务不一致性的问题;对于非运行时异常,本发明获取与该服务请求对应的服务应答方中的数据状态,并依据所述数据状态进行事务补偿,有效解决了异构系统环境下由于网络异常、宕机等原因引起的事务不一致问题。本发明将异常分为运行时异常和非运行时异常,并针对这两种异常分别提出了两种对应的事务补偿方法,能够高效地实现异构系统的事务补偿,解决了异构系统环境下保持事务一致性的问题。

且,本发明提供的应用于异构系统的事务补偿方法和装置可以复用现有系统资源,在现有企业各应用系统资源重用的基础上,尽可能地减小系统升级改造成本、缩短研发周期、保障了系统的稳定运行,实现跨应用系统数据访问过程中保持事务一致。

基于前文本发明提供的一种应用于异构系统的事务补偿方法,本发明还提供一种应用于异构系统的事务补偿装置,如图6所示,装置可以包括:

接收单元100,用于接收应用发起方发起的服务请求;

缓存单元200,用于记录与所述服务请求对应的关键信息;

异常监测确定单元300,用于在响应所述服务请求的过程中确定发生异常时,确定所述异常为运行时异常还是非运行时异常;

运行时异常处理单元400,用于对于运行时异常,获取记录的与所述服务请求对应的关键信息,并依据所述记录的与所述服务请求对应的关键信息进行实时的事务补偿;

非运行时异常处理单元500,用于对于非运行时异常,获取与所述服务请求对应的服务应答方中的数据状态,并依据所述数据状态进行事务补偿。

其中所述异常监测确定单元300具体用于:

在响应所述服务请求的过程中捕获到异常信息时,确定发生异常,并确定所述异常为运行时异常;所述运行时异常包括应用操作失败异常、数据库操作错误异常或io异常。

在响应所述服务请求的过程中所述接收单元未接收到所述服务应答方反馈的信息或链接超时中断,但接收到所述应用发起方再次发起的所述服务请求时,确定发生异常,并确定所述异常为非运行时异常。

如图7所示,所述非运行时异常处理单元500包括:

数据状态获取子单元501,用于调用所述服务应答方的接口,获取所述服务应答方中的数据状态;

第一事务补偿处理子单元502,用于依据所述数据状态,调用所述服务应答方的相应冲正交易进行事务补偿;

发送子单元503,用于待事务补偿完成后,向所述服务应答方再次发起所述服务请求。

所述运行时异常处理单元400还用于:

当所述非运行时异常处理单元500向所述服务应答方再次发起所述服务请求后,所述异常监测确定单元300确定发生运行时异常时,获取记录的与所述服务请求对应的关键信息,并依据所述记录的与所述服务请求对应的关键信息进行实时的事务补偿。

具体的,如图8所示,所述运行时异常处理单元400包括:

关键信息获取子单元401,用于获取记录的与所述服务请求对应的关键信息;

第二事务补偿处理子单元402,用于根据记录的正向交易顺序,调用所述服务应答方的相应冲正交易进行实时的事务补偿。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种应用于异构系统的事务补偿方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1