首页> 中国专利> 基于幂等号校验的业务处理方法及装置

基于幂等号校验的业务处理方法及装置

摘要

本申请提供了一种基于幂等号校验的业务处理方法及装置,所述方法包括:响应于调用方发起的幂等号获取请求,参考随机确定的目标数据库和当前业务类型生成幂等号;将所述幂等号返回给所述调用方;响应于调用方发起的业务处理请求,所述业务处理请求包括所述幂等号,对所述幂等号进行校验;如果校验不通过,则通知所述调用方重新发起幂等号获取请求;响应于调用方重新发起的幂等号获取请求,依据与所述目标数据库互为主备的数据库生成幂等号。本申请实施例,可以保证幂等号校验的可实施性和高可用性,也保证了业务处理能够持续可用地进行。

著录项

  • 公开/公告号CN105740258A

    专利类型发明专利

  • 公开/公告日2016-07-06

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201410749447.9

  • 发明设计人 陈明;

    申请日2014-12-09

  • 分类号G06F17/30(20060101);G06F9/44(20060101);H04L29/06(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人任苏亚;王宝筠

  • 地址 英属开曼群岛大开曼岛资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 00:02:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-04

    授权

    授权

  • 2016-08-03

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20141209

    实质审查的生效

  • 2016-07-06

    公开

    公开

说明书

技术领域

本申请涉及互联网数据处理技术领域,特别涉及一种基于幂等号校验的业务处理方法及装置。

背景技术

SOA(Service-OrientedArchitecture,面向服务的体系结构)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过服务之间的定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以使用统一和通用的方式进行交互。

在SOA模式的交换系统中,应用超时重发和网络重试是两种通用的超时恢复策略。这样的处理逻辑就导致了服务提供方有可能收到调用方发送的两次相同的请求,对于有些业务,服务提供方是不能处理两次的,而对于已经处理成功的请求,服务提供方不能重复处理,因此需要做幂等控制。

现有技术中有一种基于幂等号校验的业务处理方法,幂等号校验的目的是校验对应的业务请求是否已经被处理过。具体在进行幂等号校验的时候,由调用方生成幂等号并将包含幂等号的业务处理请求发送给服务提供方,而服务提供方一般都会采用多个数据库来存储业务数据,因此,服务提供方会将幂等号按照分库规则存入对应的数据库中,如果能够存储成功则说明包含该幂等号的业务处理请求还未处理过,如果存储不成功则说明包含该幂等号的业务处理请求已经被处理过。其中的分库规则保证同一个幂等号一定插入同一个数据库中。

但是发明人在研究过程中发现,假设将幂等号插入数据库时该数据库出现了宕机的现象,那么落到该数据库的幂等号校验过程就会失败,从而导致对相应的业务请求也会处理失败。

发明内容

本申请所要解决的技术问题是提供一种基于幂等号校验的业务处理方法,用以尽量避免现有技术中如果出现数据库宕机就会导致幂等号校验失败以及相应的业务处理失败的现象。

本申请还提供了一种基于幂等号校验的业务处理装置,用以保证上述方法在实际中的实现及应用。

为了解决上述问题,本申请公开了一种基于幂等号校验的业务处理方法,该方法应用于服务提供方,所述服务提供方的多个数据库两两划分为互为主备的数据库;包括:

响应于调用方发起的幂等号获取请求,依据随机确定的目标数据库生成幂等号;

将所述幂等号返回给所述调用方;

响应于调用方发起的业务处理请求,所述业务处理请求包括所述幂等号,对所述幂等号进行校验;

如果校验不通过,则通知所述调用方重新发起幂等号获取请求;

响应于调用方重新发起的幂等号获取请求,依据与所述目标数据库互为主备的数据库生成幂等号。

可选的,所述对所述幂等号进行校验,包括:

从所述幂等号中提取出目标数据库的标识以确定目标数据库;

按照所述目标数据库中的数据保存顺序,将所述幂等号顺序保存至所述目标数据库中。

可选的,所述依据随机确定的目标数据库生成幂等号,包括:

从所述服务提供方的多个数据库中随机选取当前业务对应的目标数据库;

获取当前时间信息和幂等号的序列号;

将所述目标数据库的标识、当前业务类型的业务码、时间信息和序列号组合为幂等号。

可选的,还包括:

如果校验通过,则依据所述当前业务类型执行对应的业务。

本申请公开了一种基于幂等号校验的业务处理装置,所述装置集成于服务提供方上,所述服务提供方的多个数据库两两划分为互为主备的数据库;包括:

第一幂等号生成模块,用于响应于调用方发起的幂等号获取请求,依据随机确定的目标数据库生成幂等号;

返回模块,用于将所述幂等号返回给所述调用方;

校验模块,用于响应于调用方发起的业务处理请求,所述业务处理请求包括所述幂等号,对所述幂等号进行校验;

通知模块,用于在所述校验模块的结果为校验不通过的情况下,通知所述调用方重新发起幂等号获取请求;

第二幂等号生成模块,用于依据与所述目标数据库互为主备的数据库生成幂等号。

可选的,所述校验模块包括:

提取标识模块,用于从所述幂等号中提取出目标数据库的标识以确定目标数据库;

保存模块,用于按照所述目标数据库中的数据保存顺序,将所述幂等号顺序保存至所述目标数据库中。

可选的,第一幂等号生成模块包括:

确定子模块,用于从所述服务提供方的多个数据库中随机选取当前业务对应的目标数据库;

获取子模块,用于获取当前时间信息和幂等号的序列号;

组合子模块,用于将所述目标数据库的标识、当前业务类型的业务码、时间信息和序列号组合为幂等号。

可选的,还包括:

执行业务模块,用于在所述校验模块的结果为校验不通过的情况下,依据所述当前业务类型执行对应的业务。

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

在本申请实施例中,将服务提供方存储业务数据的数据库划分为两两互为主备的数据库,调用方在接收到用户触发的业务请求时,不再自己生成幂等号,而是将生成幂等号的请求发送给服务提供方由服务提供方生成幂等号并返回给调用方,调用方再基于幂等号发起真正的业务处理请求,从而触发服务提供方对幂等号的校验以及后续业务处理过程。采用本申请实施例,即便服务提供方的数据库在进行幂等号校验的时候出现了数据库宕机的情况下,服务提供方也会通知调用方重新发起生成幂等号的请求,从而采用与宕机数据库互为主备的数据库重新生成幂等号并进行校验,从而保证了幂等号校验的可实施性和高可用性,也保证了业务处理能够持续可用地进行。

当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

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

图1是本申请的基于幂等号校验的业务处理方法实施例的流程图;

图2是本申请在实际应用中的一个应用场景架构图;

图3是本申请的一种基于幂等号校验的业务处理装置实施例的结构框图。

具体实施方式

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

本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

参考图1,示出了本申请一种基于幂等号校验的业务处理方法实施例的流程图,本实施例可以包括以下步骤:

步骤101:响应于调用方发起的幂等号获取请求,依据随机确定的目标数据库生成幂等号。

本申请实施例应用于服务提供方。在本申请实施例中,调用方一般指代业务系统,例如,用户在使用第三方支付平台进行网银付款的收银台系统等。调用方在接收到用户发起的业务请求时,例如触发当前对某个订单的付款,则调用方首先会将幂等号获取请求发送给服务提供方,而不会立即发起业务处理请求,在该幂等号获取请求中一般可以携带用户当前发起业务的当前业务类型。服务提供方一般指代处理系统,例如,负责处理收银台系统发送的用户付款请求的后台服务器。服务提供方在接收到调用方发起的幂等号获取请求的时候,参考随机确定的目标数据库来生成幂等号。

其中,目标数据库为服务提供方所使用的任意一个数据库。在本申请实施例中,服务提供方的多个数据库两两划分为主备数据库,其中目标数据库是任意一个数据库。参考图2所示,为本申请在实际应用中的一个应用场景架构图。其中,调用方201和服务提供方202通过互联网连接,服务提供方连接的目标数据库可以有多个,如图2所示,例如,其中,数据库01和11互为主备,数据库01为主数据库,数据库11为对应的备份数据库;而数据库02和12也互为主备,数据库02为主数据库,数据库12为对应的备份数据库。当然,图2中的内容仅仅为一个简单的示例,不应将其中的内容限定本申请。

具体的,服务提供方如何依据随机确定的某个目标数据库生成幂等号,可以包括:

步骤A1:从所述服务提供方的多个数据库中随机选取当前业务对应的目标数据库;

首先,服务提供方首先从连接的多个数据库中随机选取一个数据库作为当前业务对应的目标数据库,例如,选择数据库01。

步骤A2:获取当前时间信息和幂等号的序列号;

服务提供方再从系统中获取当前时间信息,可以有八位,例如20141103,也可以更详细一点,例如201411031208。服务提供方也可以获得数据库生成的幂等号的序列号,该序列号一般可以采用递增的方式获得,例如,第一个幂等号的序列号可以为001,而第二幂等号的序列号可以为002。当然,数据库也可以采用别的方式来表示幂等号的序列号。

步骤A3:将所述目标数据库的标识、当前业务类型的业务码、时间信息和序列号组合为幂等号。

在本步骤中,将选择的目标数据库的标识,例如“01”,当前业务类型的业务码,例如001(表示付款业务),以及,时间信息和序列号组合为唯一的幂等号。在实际应用中,可以预先设置好幂等号的长度,例如18位。其中,时间信息和序列号等都可以根据幂等号的长度来调整自己的长度。

步骤102:将所述幂等号返回给所述调用方。

服务提供方生成幂等号之后,将该幂等号再发送给调用方。

步骤103:响应于调用方发起的业务处理请求,业务处理请求包括所述幂等号,对所述幂等号进行校验,如果校验不通过,则进入步骤104。

而调用方在接收到幂等号之后,才会触发真正的业务处理请求,例如向服务提供方发起真正的付款请求,在该业务处理请求中会包括服务提供方返回的幂等号,以便服务提供方对该业务处理请求中的幂等号进行校验。

其中,服务提供方对所述幂等号进行校验,具体可以包括:

步骤B1:从所述幂等号中提取出目标数据库的标识以确定目标数据库;

服务提供方获取到调用方发送的幂等号之后,从幂等号中提取出目标数据库标识,例如“01”,以便确定对应的目标数据库是哪一个数据库。

步骤B2:按照所述目标数据库中的数据保存顺序,将所述幂等号顺序保存至所述目标数据库中。

然后,服务提供方再按照数据库01中的数据保存顺序,将幂等号顺序插入至数据库01中,如果服务提供方能够成功将幂等号顺序保存至数据库01中,则说明本次幂等号校验的结果为通过,即,该幂等号对应的业务请求未被处理过;如果保存不成功,则说明本次校验的结果为不通过,即,该幂等号对应的业务请求已经被处理过。其中,数据库的唯一键机制可以实现幂等号的唯一性校验,来保证同样的幂等号不会成功保存至同一个数据库中。

步骤104:如果校验不通过,则通知所述调用方重新发起幂等号获取请求。而如果服务提供方在步骤103的校验不通过,则说明服务提供方向数据库01中插入幂等号不成功,这种情况下有可能是因为数据库01宕机了,在这种情况下服务提供方可以通知调用方重新发起幂等号获取请求。

步骤105:响应于调用方重新发起的幂等号获取请求,依据与所述目标数据库互为主备的数据库生成幂等号。

而如果调用方在接收到服务提供方的通知之后,重新发起了幂等号获取请求,服务提供方在接收到调用方重新发起的幂等号获取请求之后,首先确定与所述目标数据库互为主备的对端数据库,在本实施例中即与数据库01互为主备的数据库11,然后依据数据库11重新生成幂等号。具体的,在本步骤中则服务提供方可以参考数据库11,当前业务类型,当前时间信息,以及幂等号的序列号等,重新组合生成幂等号(具体方式可以参考步骤101的介绍),进而进入步骤102开始下一轮的循环。

可选的,在实际应用中,在步骤103之后,如果校验通过,还可以包括:

步骤106:依据所述当前业务类型执行对应的业务。

在本步骤中,如果校验通过,则服务提供方就依据调用方发起业务的当前业务类型来执行对应的业务,例如,如果是付款业务就执行扣款操作。

可见,在本申请实施例中,将服务提供方存储业务数据的数据库划分为两两互为主备的数据库,调用方在接收到用户触发的业务请求时,不再自己生成幂等号,而是将生成幂等号的请求发送给服务提供方由服务提供方生成幂等号并返回给调用方,调用方再基于幂等号发起真正的业务处理请求,从而触发服务提供方对幂等号的校验以及后续业务处理过程。采用本申请实施例,即便服务提供方的数据库在进行幂等号校验的时候出现了数据库宕机的情况下,服务提供方也会通知调用方重新发起生成幂等号的请求,从而采用宕机数据库的备份数据库重新生成幂等号并进行校验,从而保证了幂等号校验的可实施性和高可用性,也保证了业务处理能够持续可用地进行。

对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

与上述本申请一种基于幂等号校验的业务处理方法实施例所提供的方法相对应,参见图3,本申请还提供了一种基于幂等号校验的业务处理装置实施例,在本实施例中,该装置可以集成于服务提供方上,服务提供方的多个数据库两两划分为互为主备的数据库;该装置可以包括:

第一幂等号生成模块301,用于响应于调用方发起的幂等号获取请求,依据随机确定的目标数据库生成幂等号。

其中,可选的,第一生成幂等号模块301可以包括:

确定子模块,用于从所述服务提供方的多个数据库中随机选取当前业务对应的目标数据库;获取子模块,用于获取当前时间信息和幂等号的序列号;和,组合子模块,用于将所述目标数据库的标识、当前业务类型的业务码、时间信息和序列号组合为幂等号。

返回模块302,用于将所述幂等号返回给所述调用方。

校验模块303,用于响应于调用方发起的业务处理请求,所述业务处理请求包括所述幂等号,对所述幂等号进行校验。

其中,可选的,所述校验模块303可以包括:

提取标识模块,用于从所述幂等号中提取出目标数据库的标识以确定目标数据库;和,保存模块,用于按照所述目标数据库中的数据保存顺序,将所述幂等号顺序保存至所述目标数据库中。

通知模块304,用于在所述校验模块的结果为校验不通过的情况下,通知所述调用方重新发起幂等号获取请求。

第二幂等号生成模块305,用于依据与所述目标数据库互为主备的数据库生成幂等号。

可选的,在实际应用中,该装置还可以包括:

执行业务模块306,用于在所述校验模块的结果为校验通过的情况下,依据所述当前业务类型执行对应的业务。

可见,在本实施例中,将服务提供方存储业务数据的数据库划分为两两互为主备的数据库,调用方在接收到用户触发的业务请求时,不再自己生成幂等号,而是将生成幂等号的请求发送给服务提供方由服务提供方生成幂等号并返回给调用方,调用方再基于幂等号发起真正的业务处理请求,从而触发服务提供方对幂等号的校验以及后续业务处理过程。采用本申请实施例,即便服务提供方的数据库在进行幂等号校验的时候出现了数据库宕机的情况下,服务提供方也会通知调用方重新发起生成幂等号的请求,从而采用宕机数据库的备份数据库重新生成幂等号并进行校验,从而保证了幂等号校验的可实施性和高可用性,也保证了业务处理能够持续可用地进行。

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

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

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号