一种事务的最终一致性保障方法及系统与流程

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

本发明涉及移动业务支撑技术领域,尤其涉及一种事务的最终一致性保障方法及系统。

背景技术

在分布式事务场景中,事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,因此,为了保证分布式事务流程的有效进行,通过获取本地消息来实现事务的最终一致性,其中,本地消息是将分布式事务拆成一系列的本地事务,通过定时轮询的方式,检查数据库中的本地消息,当发现新数据时,则通知对方。

发明人对现有的事务的最终一致性的保障方法进行研究发现,在高并发场景下,过于频繁的定时轮询操作,对数据库吞吐量和性能有较高的要求,当数据库不能满足要求时,导致处理效率低下。



技术实现要素:

有鉴于此,本发明提供了一种事务的最终一致性保障方法及系统,用以解决现有技术中在高并发场景下,过于频繁的定时轮询操作,对数据库吞吐量和性能有较高的要求,当数据库不能满足要求时,导致处理效率低下的问题。具体方案如下:

一种事务的最终一致性保障方法,包括:

检测目标事务所属的应用场景;

当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性;

当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性。

上述的方法,可选的,当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性包括:

当所述异常类型为被调方异常时,主调方反馈回滚失败;

当所述异常类型为超时异常时,进行稽核回滚;

当所述异常类型为多方业务中的至少一方失败时,对所述多方业务全部进行回滚。

上述的方法,可选的,还包括:

将与所述异常类型对应的回滚结果,保存到对应的数据表中。

上述的方法,可选的,当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性包括:

扫描与所述异步调用应用场景对应的各个数据表,获取所述各个数据表中的异常信息和/或异常数据节点;

判断与所述述异步调用应用场景对应的幂等表中是否存在与所述异常信息和/或异常数据节点对应的数据;

若否,对与所述异常信息和/或异常数据节点对应的业务进行重做。

上述的方法,可选的,还包括:

若是,获取所述数据,将所述数据传递给所述异步调用应用场景中的对应节点。

一种事务的最终一致性保障系统,包括:

检测模块,用于检测目标事务所属的应用场景;

同步调用模块,用于当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性;

异步调用模块,用于当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性。

上述的系统,可选的,所述同步调用模块包括:

第一异常单元,用于当所述异常类型为被调方异常时,主调方反馈回滚失败;

第二异常单元,用于当所述异常类型为超时异常时,进行稽核回滚;

第三异常单元,用于当所述异常类型为多方业务中的至少一方失败时,对所述多方业务全部进行回滚。

上述的系统,可选的,所述同步调用模块还包括:

保存单元,用于将与所述异常类型对应的回滚结果,保存到对应的数据表中。

上述的系统,可选的,所述异步调用模块包括:

扫描单元,用于扫描与所述异步调用应用场景对应的各个数据表,获取所述各个数据表中的异常信息和/或异常数据节点;

判断单元,用于判断与所述述异步调用应用场景对应的幂等表中是否存在与所述异常信息和/或异常数据节点对应的数据;

重做单元,用于若否,对与所述异常信息和/或异常数据节点对应的业务进行重做。

上述的系统,可选的,还包括:

传递单元,用于若是,获取所述数据,将所述数据传递给所述异步调用应用场景中的对应节点。

与现有技术相比,本发明包括以下优点:

本发明提供了一种事务的最终一致性保障方法,包括:检测目标事务所属的应用场景;当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性,当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性。上述的方法,无论是同步应用场景或者是异步应用场景,均不需要轮询来保证一致性,避免了在高并发场景下,过于频繁的定时轮询操作,对数据库吞吐量和性能有较高的要求,当数据库不能满足要求时,导致处理效率低下的问题。

附图说明

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

图1为本申请实施例公开的一种事务的最终一致性保障方法流程图;

图2为本申请实施例公开的一种事务的最终一致性保障方法示意图;

图3为本申请实施例公开的一种事务的最终一致性保障方法又一示意图;

图4为本申请实施例公开的一种事务的最终一致性保障方法又一方法流程图;

图5为本申请实施例公开的一种事务的最终一致性保障方法又一示意图;

图6为本申请实施例公开的一种事务的最终一致性保障系统结构框图。

具体实施方式

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

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

本发明提供了一种事务的最终一致性保障方法,所述方法应用在移动业务支撑领域,本发明实施例中,以分布式事务场景中为例进行说明,所述保障方法的执行流程如图1所示,包括步骤:

s101、检测目标事务所属的应用场景;

本发明实施例中,首先需要确定所述目标事务的应用场景,所述应用场景的确定可以依据所述目标事务的类型。所述应用场景包括同步调用应用场景和异步调用应用场景。

s102、当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性;

本发明实施例中,当所述目标事务属于同步调用应用场景时,依据所述同步调用应用场景中出现的异常的类型,进行对应的回滚操作,依据所述回滚操作,保障所述目标事务的最终一致性。

s103、当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性。

本发明实施例中,当所述目标事务属于异步调用应用场景时,所述异步调用应用场景必须满足幂等性要求和重试机制,才能保证所述目标事务的最终一致性。

其中,同步调用应用场景:实时性要求高的业务,比如宽带受理等业务,即页面上返回的结果是已经进行了持久化的。异步调用应用场景:实时性要求不高的业务,例如:充值业务,即当你充值后并没有进行真正的数据持久化,就像银行转账一样,当你转账成功后,对方并没有收到转账,而是等带后台异步进程处理后对方才接收到。

本发明提供了一种事务的最终一致性保障方法,包括:检测目标事务所属的应用场景;当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性,当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性。上述的方法,无论是同步应用场景或者是异步应用场景,均不需要轮询来保证一致性,避免了在高并发场景下,过于频繁的定时轮询操作,对数据库吞吐量和性能有较高的要求,当数据库不能满足要求时,导致处理效率低下的问题。

本发明实施例中,当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性过程中,当所述异常类型为被调方异常时,主调方反馈回滚失败;当所述异常类型为超时异常时,进行稽核回滚;其中当所述异常类型为多方业务中的至少一方失败时,对所述多方业务全部进行回滚。其中,优选的,异常的标识就是捕捉到exception。

本发明实施例中,优选的,提供了一种分布式服务框架用于处理上述的同步调用应用场景和异步调用应用场景,其中所述同步调用应用场景具体的示意图,如图2所示:

当被调用接口开启业务一致性功能时:

若为一个子系统:外围系统发起调用,中心a调用中心b超时失败,抛出异常.,同时记录调用链数据;若为多个子系统:外围系统发起调用,中心a调用中心b,中心c成功,调用中心d超时失败,或者a系统自身业务异常前面成功的调用中有操作类型的接口,则记录调用链数据.

总结:当被调用的其它中心接口为操作类型的接口时,出现超时失败或发起调用方业务失败时,需要记录超时数据,调用链过程数据。

一致性处理后台进程扫描调用链数据:

业务一致性处理后台进程扫描数据库中对应的数据表,将需要返撤的数据送入消息队列,各中心进行消息订阅,进行事务一致性补偿操作:

各中心通过消息订阅,获取需要补偿的消息;

依据获取消息的流水号,去数据表核实是否有操作成功的记录(所有业务操作成功的,均会记录在所述数据表中);

如果有成功的业务记录,说明确实需要补偿;

调用相关补偿接口,进行事务一致性补偿操作,同时记录补偿结果至对应数据表

本发明实施例中,针对需要做业务回滚机制的接口需要提供回滚接口,例如:a中心提供了创建帐号的接口,内部的数据持久化操作为将帐号信息保存的操作,那么回滚的接口即删除帐号信息的操作,当后台进程扫描到该业务异常需要进行回滚操作的时候,调用该回滚接口进行回滚操作,其中,所述回滚机制的处理流程如图3所示,当服务3-客管中心的业务调用存在异常时,直接对服务1-开通中心和服务3-账户中心的业务触发回退。

本发明实施例中,当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性的方法流程如图4所示,包括步骤:

s201、扫描与所述异步调用应用场景对应的各个数据表,获取所述各个数据表中的异常信息和/或异常数据节点;

本发明实施例中,遍历各个数据表,获取所述各个数据表中的的异常信息和/或异常数据节点。

s202、判断与所述述异步调用应用场景对应的幂等表中是否存在与所述异常信息和/或异常数据节点对应的数据;

本发明实施例中,所述幂等表中存储有入参、出参和调用的流水数据,将所述异常信息和/或异常数据节点对应的数据与所述幂等表中的数据进行对比,判断幂等表中是否存在与所述异常信息和/或异常数据节点对应的数据。

s203、若否,对与所述异常信息和/或异常数据节点对应的业务进行重做。

本发明实施例中,若否,对与所述异常信息和/或异常数据节点对应的业务进行重做;若是,获取所述数据,将所述数据传递给所述异步调用应用场景中的对应节点。

本发明实施例中,优选的,提供了一种分布式服务框架用于处理上述的同步调用应用场景和异步调用应用场景,本发明实施例中,所述一簇调用应用场景的处理过程为:正常调用过程中,订单中心根据设置流水(busicallcode=地市+年月+工单id+接口次数序号),发起rpc框架调用;判断是否为重试调用(根据数据库表中相应字段值);业务正常调用完成,异步将入参,出参,调用流水存入幂等下表;订单中心一致性处理后台进程去扫描数据表,;根据异常信息和/或流程节点配置发起重试;订单中心设置流水(保证和正常调用流水一直),同时标识为重试调用;根据重试标识,直接拿流水去幂等表中查找数据:存在,直接返回出参;不存在,执行业务。

本发明实施例中,所述幂等和重试机制的处理流程如图5所示,业务重做是指当服务1-->服务2--->服务3的调用过程中,服务1和服务2调用成功,服务3调动失败;那么框架会记录调用服务3的出入参信息,后台进程扫描到该信息后,通过还原入参信息进行对服务3的重新调用。

本发明实施例中,所述事务的最终一致性保障方法中,实现了运行框架区域优化:业务运行框架新增公共区域,实现业务编码唯一流水信息的记录,在服务调用间传递;服务调用完整记录:通过服务调用方记录所有远程调用的成功失败情况;业务二次处理策略:通过制定业务重做、业务回滚等二次处理策略实现业务数据的最终一致性。

本发明实施例中,与上述的一种事务的最终一致性保障方法相对应的,本发明还提供了一种事务最终一致性保障系统,所述保障系统的结构框图如图6所示,包括:

检测模块301,同步调用模块302和异步调用模块303。

其中,

所述检测模块301,用于检测目标事务所属的应用场景;

所述同步调用模块302,用于当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性;

所述异步调用模块303,用于当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性。

本发明提供了一种事务的最终一致性保障系统,包括:检测目标事务所属的应用场景;当所述目标事务属于同步调用应用场景时,解析所述同步调用应用场景中的异常类型,确定与所述异常类型对应的回滚操作,保障所述目标事务的最终一致性,当所述目标事务属于异步调用应用场景时,确保所述异步调用应用场景中幂等性要求和重试机制,保障所述目标事务的最终一致性。上述的系统,无论是同步应用场景或者是异步应用场景,均不需要轮询来保证一致性,避免了在高并发场景下,过于频繁的定时轮询操作,对数据库吞吐量和性能有较高的要求,当数据库不能满足要求时,导致处理效率低下的问题。

本发明实施例中,所述同步调用模块302包括:

第一异常单元304,第二异常单元305和第三异常单元306。

其中,

所述第一异常单元304,用于当所述异常类型为被调方异常时,主调方反馈回滚失败;

所述第二异常单元305,用于当所述异常类型为超时异常时,进行稽核回滚;

所述第三异常单元306,用于当所述异常类型为多方业务中的至少一方失败时,对所述多方业务全部进行回滚。

本发明实施例中,所述同步调用模块302还包括:保存单元307。

其中,

所述保存单元307,用于将与所述异常类型对应的回滚结果,保存到对应的数据表中。

本发明实施例中,所述异步调用模块303包括:

扫描单元308,判断单元309和重做单元310。

其中,

所述扫描单元308,用于扫描与所述异步调用应用场景对应的各个数据表,获取所述各个数据表中的异常信息和/或异常数据节点;

所述判断单元309,用于判断与所述述异步调用应用场景对应的幂等表中是否存在与所述异常信息和/或异常数据节点对应的数据;

所述重做单元310,用于若否,对与所述异常信息和/或异常数据节点对应的业务进行重做。

本发明实施例中,所述异步调用单元303还包括:传递单元311。

其中,

所述传递单元311,用于若是,获取所述数据,将所述数据传递给所述异步调用应用场景中的对应节点。

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

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

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

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

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