数据异常的处理方法、装置、计算设备及介质与流程

文档序号:18899508发布日期:2019-10-18 21:44阅读:241来源:国知局
数据异常的处理方法、装置、计算设备及介质与流程
本公开涉及计算机
技术领域
,更具体地,涉及一种数据异常的处理方法、装置、计算设备及介质。
背景技术
:银行交易往往涉及多个操作流程,比如一个交易过程包含输入信息的合法性检查、相关参数检查、交易信息检查、产品信息检查、各个业务处理等步骤。在这些操作流程中,若采用串行的方式处理这些事务,即等待一个交易事务处理完毕再进行下一事务的处理,将大大延长了流程处理的时间,影响客户体验,且系统的容量不高。为解决上述问题,相关技术一般采用交易并发的处理方法。在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题:相关技术在数据的并发处理的过程中,若其中某些操作出现异常,系统的回撤机制会对这些异常操作进行回撤,而与其并行的其他正常操作并不会同时回撤,这将导致异常操作与正常操作所得到的数据不一致。技术实现要素:有鉴于此,本公开提供了一种数据异常的处理方法、装置、计算设备及介质。本公开的一个方面提供了一种数据异常的处理方法,包括:确定多个原子事务,所述原子事务包括数据的并行处理过程中所需执行的操作;并行执行所述多个原子事务;在所述多个原子事务执行完成之前,若任意一个所述原子事务的运行过程出现异常,则执行回撤操作;以及获得所述多个原子事务的运行结果。根据本公开的实施例,其中,所述多个原子事务包括内存写操作、数据库写操作以及文件写操作中的一种或多种。根据本公开的实施例,上述方法还包括:确定所述运行结果是否出现异常;以及若所述运行结果中任意一个运行结果出现异常,则执行回撤操作。根据本公开的实施例,所述执行回撤操作包括:获得所述多个原子事务中除运行过程出现异常的原子事务之外的其他原子事务;以及执行所述其他原子事务所对应的回撤子操作。根据本公开的实施例,上述方法还包括:确定所述回撤操作是否异常;以及若所述回撤操作异常,则执行例外处理操作。根据本公开的实施例,所述例外处理操作包括记录所述回撤操作发生的场景、生成报警信息以及重新执行所述回撤操作中的一种或多种。本公开的另一个方面提供了一种数据异常的处理装置,包括确定模块,用于确定多个原子事务,所述原子事务包括数据的并行处理过程中所需执行的操作;执行模块,用于并行执行所述多个原子事务;第一回撤模块,用于在所述多个原子事务执行完成之前,在任意一个所述原子事务的运行过程出现异常的情况下,执行回撤操作;以及获得模块,用于获得所述多个原子事务的运行结果。根据本公开的实施例,上述装置还包括结果检测模块,用于确定所述运行结果是否出现异常;第二回撤模块,用于在所述运行结果中任意一个运行结果出现异常的情况下,执行回撤操作。本公开的另一个方面提供了一种计算设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。根据本公开的实施例,通过在原子事务运行过程出现异常的情况下,执行回撤操作,从而将原子事务操作的对象恢复到原子事务执行之前的状态,避免正常的原子事务与出现异常的原子事务对数据的修改不一致的情况,保证数据的一致性。同时,在其中任意一个原子事务出现异常的情况下即执行回撤操作,而无需等待其他原子事务执行结束,因此减少了响应时间,提高了处理效率。附图说明通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:图1示意性示出了根据本公开实施例的可以应用数据异常的处理方法的示例性系统架构;图2示意性示出了根据本公开实施例的数据异常的处理方法的示例流程图;图3示意性示出了根据本公开的实施例的执行回撤操作的示例流程图;图4示意性示出了根据本公开另一实施例的数据异常的处理方法的示例流程图;图5示意性示出了根据本公开另一实施例的数据异常的处理方法的示例流程图;图6示意性示出了根据本公开另一实施例的基金购买交易的示例流程图;图7示意性示出了根据本公开实施例的数据异常的处理装置的示例框图;图8示意性示出了根据本公开另一实施例的数据异常的处理装置的示例框图;以及图9示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的方框图。具体实施方式以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。本公开的实施例提供了一种数据异常的处理方法以及能够应用该方法的装置。该方法包括:首先,确定并行处理过程中所需执行的操作作为原子事务。然后,并行执行这些原子事务。在这些原子事务运行完成之前,若任意一个所述原子事务的运行过程出现异常,则执行回撤操作。随后,在这些原子事务运行运行完成后,获得这些原子事务的运行结果。图1示意性示出了根据本公开实施例的可以应用数据异常的处理方法的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收交易信息或发送交易指令等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网上银行、基金交易软件等(仅为示例)。终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。需要说明的是,本公开实施例所提供的数据异常的处理方法一般可以由服务器105执行。相应地,本公开实施例所提供的数据异常的处理装置一般可以设置于服务器105中。本公开实施例所提供的数据异常的处理方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据异常的处理装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。图2示意性示出了根据本公开的实施例的数据异常的处理方法200的示例流程图。如图2所示,该方法可以包括以下操作s210~s250。在操作s210,确定多个原子事务。根据本公开的实施例,操作s210例如可以包括,响应于终端向服务器发起交易请求(交易请求例如交易数据检查、交易参数检查、产品额度更新、开户处理、交易明细登记等),服务器根据交易请求启动相应的交易流程,其中,有些流程可以并行进行,在这些并行进行的流程中执行的具体操作即为原子事务。举例说明,如以下示出的表1所示,操作worka、workb、workc的前置操作都为workfirst,当workfirst运行完毕后可以并发启动worka、workb、workc,因此,worka、workb、workc为原子事务。本领域技术人员可以理解,前置操作是指启动后续操作所依赖的操作,后续操作是指需等待其前置操作全部执行完毕才能启动的操作。表1前置操作后续操作tradebeginworkfirstworkfirstworkaworkfirstworkbworkfirstworkcworkaworkendworkbworkendworkcworkend根据本公开的实施例,原子事务例如可以包括内存写操作、数据库写操作以及文件写操作中的一种或多种。根据本公开的实施例,操作s210中确定的原始事务可以保存在数组中,以便后续查找。可选的,原始事务也可以存储在诸如列表等其他数据结构中,本公开对此并不做具体的限定。在操作s220,并行执行多个原子事务。根据本公开的实施例,操作s220例如可以包括,并发启动s210中确定的多个原子事务,同时运行这些原子事务。接下来,在操作s230,确定任意一个原子事务的运行过程是否出现异常。如果确定出现异常,则执行操作s250。否则,执行操作s240。接下来将详细描述操作230。根据本公开的实施例,操作s230例如可以包括,监听所有原子事务的运行进程,当监听到任意一个原子事务的运行过程中报错,则执行s250,若运行过程中没有报错,则执行s240。在操作s240,获得多个原子事务的运行结果。根据本公开的实施例,原子事务的运行结果可以包括成功或失败。例如,若原子事务为写入操作,则其运行结果为是否成功完成写入操作。根据本公开的实施例,可以根据原子事务所对应的执行函数的返回值来确定该原子事务的运行结果。例如,若函数返回值为success,则表示运行结果为成功,否则,表示运行结果为为失败。在操作s250,执行回撤操作。根据本公开的实施例,操作s250例如可以包括,将上述所有原子事务所做的更改回撤,以恢复到原子事务执行前的状态。根据本公开实施例,可以按照以下方案来实现操作s250的执行回撤操作。图3示意性示出了根据本公开的实施例的执行回撤操作的示例流程图。如图3所示,操作s250可以进一步包括以下操作s251~s252。在操作s251,获得多个原子事务中除运行过程出现异常的原子事务之外的其他原子事务。根据本公开的实施例,操作s251例如可以包括,在存储所有原子事务的数组中查找出现异常的原子事务之外的其他原子事务。接下来,在操作s252,执行其他原子事务所对应的回撤子操作。根据本公开的实施例,回撤子操作为原子事务的反向操作,用于将被该原子事务操作的对象恢复到被操作之前的状态。例如原子事务为在内存中写入数值a,则其对应的回撤子操作位删除写入的数值a。又例如原子事务为将数据库中的数值b修改为c,则其对应的回撤子操作为将c修改回b。根据本公开的实施例,可以为每个原子事务预设相应的回撤函数,通过调用原子事务所对应的回撤函数,以将原子操作所操作的对象恢复到执行该原子操作之前的状态。另外需要说明的是,本实施例中,对于出现异常的原子事务,可以调用系统自带的异常处理机制进行回撤。本领域技术人员可以理解,可以使用各种技术来实现异常处理机制的回撤,本公开实施例不对此进行限制。根据本公开的实施例,通过在原子事务运行过程出现异常的情况下,执行回撤操作,从而将原子事务操作的对象恢复到原子事务执行之前的状态,从而避免正常的原子事务与出现异常的原子事务对数据的修改不一致的情况,保证数据的一致性。同时,在其中任意一个原子事务出现异常的情况下即执行回撤操作,而无需等待其他原子事务执行结束,因此减少了响应时间,提高了处理效率。图4示意性示出了根据本公开另一实施例的数据异常的处理方法400的示例流程图。如图4所示,与图2所示的数据异常的处理方法200不同的是,除了操作s210~s250以外,根据本公开另一实施例的数据异常的处理方法400还可以包括操作s460。在例如图2所示的步骤s240获得多个原子事务的运行结果之后,还可以执行操作s460。在操作s460,确定运行结果是否出现异常,在运行结果中任意一个运行结果出现异常的情况下,跳转执行操作s250。根据本公开的实施例,若原子事务的运行结果为失败则表示该运行结果出现异常。根据本公开的实施例,通过对原子事务的运行结果进行判定,在运行结果出现异常时执行回撤操作,将原子事务操作的对象恢复到原子事务执行之前的状态,从而避免正常的原子事务与出现异常的原子事务对数据的修改不一致的情况,保证数据的一致性。图5示意性示出了根据本公开另一实施例的数据异常的处理方法的示例流程图。如图5所示,与图4所示的数据异常的处理方法200不同的是,除了操作s210~s250以及s460以外,根据本公开另一实施例的数据异常的处理方法500还可以包括以下操作s570~s580。在操作s570,确定回撤操作是否异常,在回撤操作异常的情况下,执行s580。根据本公开的实施例,可以通过监测回撤操作所调用的各个回撤函数运行是否报错,并且在回撤函数运行结束后判断是否成功将原子事务操作的对象恢复到初始状态来确定回撤操作是否异常。若回撤函数报错,或者对象未恢复到初始状态,则表示回撤操作异常。在操作s580,执行例外处理操作。根据本公开的实施例,所述例外处理操作包括记录所述回撤操作发生的场景信息,场景信息例如包括发生异常的原子事务id以及所对应的交易的上下文信息等信息。在本公开的另一些实施例中,所述例外处理操作还可以包括生成报警信息或者重新执行所述回撤操作等。根据本公开的实施例,通过对回撤操作是否异常进行检测,并在回撤失败时,执行相应的例外处理操作,从而能够减少回撤失败造成的不利影响。本领域技术人员可以理解,在另一些实施例中,数据异常的处理方法500也可以不包含s460,仅包含操作s210~s250以及操作s570~s580。为了便于理解本公开实施例的技术方案,下面结合图6,以基金购买交易的流程为例,说明本公开上述数据异常的处理方法。本领域技术人员可以理解,图6所示的基金购买交易的流程仅为示例,本公开实施例不局限于此。如图6所示,在操作s601:确定基金购买需要并发执行的3个原子事务:黑名单检查、基金交易额度更新、基金分户更新。在操作s602,并发启动黑名单检查、基金交易额度更新、基金分户更新。在操作s603,监测黑名单检查、基金交易额度更新、基金分户更新的运行过程是否异常。如果黑名单检查、基金交易额度更新、基金分户运行都正常,则执行s604,否则,执行s607。接下来,在操作s604,获得各原子事务的运行结果。然后,在操作s605,对运行结果进行判定,如果黑名单检查、基金交易额度更新、基金分户更新都处理成功,则执行s606,否则执行s607。在操作s606,进行交易的下一步流程。在操作s607,启动事务回撤操作。在操作s608,并发执行基金交易额度更新和基金分户更新的回撤子操作。需要说明的是,由于黑名单检查操作只是对相关数据进行了读取,没有对数据进行更改操作,因此本实施例中没有针对黑名单检查操作执行回撤。在操作s609,监测基金交易额度更新和基金分户更新的回撤子操作是否异常。如果回撤正常,则执行s611,否则,执行s609。在操作s610,启动异常回撤例外处理操作,记录异常的交易数据。然后,在操作s611,进行交易的下一步流程。图7示意性示出了根据本公开的实施例的数据异常的处理装置的框图。如图7所示,装置700包括确定模块710、执行模块720、第一回撤模块730和获得模块740。确定模块710,用于确定多个原子事务,所述原子事务包括数据的并行处理过程中所需执行的操作。执行模块720,用于并行执行多个原子事务。第一回撤模块730,用于在多个原子事务执行完成之前,在任意一个原子事务的运行过程出现异常的情况下,执行回撤操作。获得模块740,用于获得多个原子事务的运行结果。根据本公开的实施例,通过在原子事务运行过程出现异常的情况下,执行回撤操作,从而将原子事务操作的对象恢复到原子事务执行之前的状态,从而避免正常的原子事务与出现异常的原子事务对数据的修改不一致的情况,保证数据的一致性。同时,在其中任意一个原子事务出现异常的情况下即执行回撤操作,而无需等待其他原子事务执行结束,因此减少了响应时间,提高了处理效率。图8示意性示出了根据本公开另一实施例的数据异常的处理装置的框图。如图8所示,装置800在图7所示的确定模块710、执行模块720、第一回撤模块730和获得模块740的基础上,还包括结果检测模块840,用于确定运行结果是否出现异常;以及第二回撤模块850,用于在多个运行结果中任意一个运行结果出现异常的情况下,执行回撤操作。根据本公开的实施例,通过对原子事务的运行结果进行判定,在运行结果出现异常时执行回撤操作,将原子事务操作的对象恢复到原子事务执行之前的状态,从而避免正常的原子事务与出现异常的原子事务对数据的修改不一致的情况,保证数据的一致性。根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。例如,确定模块710、执行模块720、第一回撤模块730、获得模块740、结果检测模块840以及第二回撤模块850的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,确定模块710、执行模块720、第一回撤模块730、获得模块740、获得子模块810、回撤子模块820、第一检测模块910、第二回撤模块920、第二检测模块1010以及例外处理模块1020中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,确定模块710、执行模块720、第一回撤模块730、获得模块740、结果检测模块840以及第二回撤模块850中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。图9示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的方框图。图9示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。如图9所示,计算机系统900包括处理器910、计算机可读存储介质920、信号发送器930、以及信号接收器940。该计算机系统900可以执行根据本公开实施例的方法。具体地,处理器910例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器910还可以包括用于缓存用途的板载存储器。处理器910可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。计算机可读存储介质920,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;等等。计算机可读存储介质920可以包括计算机程序921,该计算机程序921可以包括代码/计算机可执行指令,其在由处理器910执行时使得处理器910执行根据本公开实施例的方法或其任何变形。计算机程序921可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序921中的代码可以包括一个或多个程序模块,例如包括921a、模块921b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器910执行时,使得处理器910可以执行根据本公开实施例的方法或其任何变形。根据本公开的实施例,处理器910可以与信号发送器930和信号接收器940进行交互,来执行根据本公开实施例的方法或其任何变形。根据本发明的实施例,确定模块710、执行模块720、第一回撤模块730、获得模块740、结果检测模块840以及第二回撤模块850中的至少一个可以实现为参考图9描述的计算机程序模块,其在被处理器910执行时,可以实现上面描述的相应操作。本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1