具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面结合附图,对本说明书提供的方案进行详细描述。
图1为本说明书一个实施例提供的回滚处理方法的流程图。如图1所示,该回滚处理方法可以包括:
S110:接收清算文件;
S120:确定当前清算节点和目标节点在清算流程中的节点距离;
S130:在节点距离小于第一预设阈值的情况下,比对清算文件和目标节点对应的历史文件,得到差异数据;
S140:基于差异数据进行回滚。
根据上述的本说明书一个或多个实施例,通过接收到的清算文件,确定当前清算节点与目标节点在清算流程中的节点距离;在所述节点距离小于第一预设阈值的情况下,比对清算文件和目标节点对应的历史文件,得到差异数据;基于所述差异数据进行回滚。
在本说明书的S110,包括:
接收第三方支付机构,例如,余额宝重新上传的清算文件。
在本说明书的S110之前,回滚处理方法,还包括:
在对清算流程中的每一个节点进行清算过程中,也会对清算完之后的清算结果进行核对,当基金公司清算至清算流程中的某一清算节点(例如,当前清算节点)时,确定目标节点(在清算时序上优先当前清算节点)对应的清算结果存在错误,例如,因目标节点对应的历史文件存在错误导致目标节点对应的清算结果有误;此时,基金公司需要先中断清算流程;并由余额宝重新上传清算文件至基金公司。其中,可以采用实时核对的方式对清算结果进行核对,或者,在清算完某一清算节点之后才对该某一清算节点的清算结果进行核对。
另外,在对清算流程中的每一个节点进行清算过程中,还需要备份每一个节点对应的清算文件;以及,在对目标节点重新清算时,还需要对重新提供的清算文件进行备份。例如,按照分库分表的方式进行备份(如图2所示),在图2中以数据库11、数据库12、…、数据库n,以及分表1、分表2、…、分表m为示例。
其中,历史文件为中断清算流程之前,对清算流程中的每一个节点进行清算时,备份的文件。
其中,核对清算结果,包括以下几种方式:
第一种方式:由基金公司自主核对清算结果,在核对清算结果过程中确认目标节点对应的历史文件有误;此时,中断清算流程,并通知余额宝,重新上传清算文件;
第二种方式:由余额宝进行核对清算结果,在余额宝确认目标节点处的历史文件有误时,由余额宝告知基金公司中断清算流程,并由余额宝重新上传清算文件至基金公司;或者,由监管方进行核对清算结果,在监管方确认目标节点处的历史文件有误时,由监管方告知基金公司中断清算流程,并由监管方通知余额宝重新上传清算文件至基金公司。
在执行第二种方式的过程中,基金公司响应于接收到的清算文件重给的操作请求,该操作请求包括清算文件和目标节点。
在本说明书的一个实施例中,可以将清算文件中的一个文件设置为待验证的文件,例如检测预设的周期内待验证的文件是否到达,来确认清算文件是否重新上传至基金公司。其中,待验证的文件可以为清算文件中重要等级较高的清算文件、或风险等级较高的清算文件等,本实施例对此不做限制。
在本说明书中的当前清算节点和目标节点如图3所示。
在图3中,节点1~5为清算流程中的一部分;节点5为当前清算节点,节点4为目标节点;在图3中以三笔交易记录“转账10元”、“转账4元”、“转账2元”为示例。
在本说明书的S130包括:
如果当前清算节点对应的流程相较目标节点对应的流程领先较少时(即节点距离小于第一预设阈值的情况),则比对清算文件和目标节点对应的历史文件,得到差异数据。
在本说明书的一个实施例中,比对清算文件和目标节点对应的历史文件,得到差异数据,包括:
根据交易记录的标识分别拆分历史文件和清算文件;比对拆分后的历史文件和拆分后的清算文件,得到差异数据。
在对清算文件和历史文件进行比对时,需要调用目标节点对应的历史文件;例如,基于历史文件包括的多个交易记录中的每一个交易记录的标识调用目标节点对应的历史文件;其中,交易记录的标识与数据库、以及分表相关联,即可以通过标识从数据库、以及分表中调用目标节点对应的历史文件。
在本说明书中,通过将清算文件和历史文件包括的多笔交易记录进行拆分,并逐一比对交易记录,降低比对难度,也能准确知道清算文件有误的地方。
其中,第一预设阈值可以为当前清算节点领先目标节点30%。
需要说明的是,30%并不是唯一固定的值;第一预设阈值可以基于对清算时长的需要来动态调整。
在本说明书的一个实施例中,在得到差异数据之后,该回滚处理方法还包括:
判断差异数据的数量是否小于第二预设阈值;
在差异数据的数量小于第二预设阈值的情况下,基于差异数据进行回滚。
在本说明书中,第二预设阈值为10%。
需要说明的是,10%并不是唯一固定的值;第二预设阈值可以基于对清算时长的需要来动态调整。
在本说明书的一个实施例中,S140包括:
在历史文件包括的交易记录的笔数多于清算文件包括的交易记录的笔数情况下,对差异数据对应的交易记录进行冲销操作。
在图4中,在对历史文件和清算文件进行拆分比对之后,确定历史文件相较清算文件多一笔交易记录,即“转账2”,此时需要将“转账2”进行冲销操作。
在本说明书的一个实施例中,S140包括:
在历史文件包括的交易记录的笔数小于清算文件包括的交易记录的笔数的情况下,补充差异数据对应的交易记录。
在图5中,在对清算文件进行拆分之后,再与历史文件比对,确定历史文件相较清算文件少一笔交易记录,即“转账2”,此时需要将“转账2”进行补充。
在本说明书的一个实施例中,S140包括:
在历史文件包括差异数据,且差异数据为错误交易记录的情况下,对差异数据进行冲销操作;
比对清算文件和冲销操作后的历史文件,确定第一差异数据;此时,第一差异数据为冲销操作后的历史文件,该冲销操作后的历史文件包括的交易记录的笔数少于清算文件包括的交易记录的笔数;
补充第一差异数据对应的交易记录。
在图6中,在对历史文件和清算文件进行拆分比对之后,确定历史文件相较清算文件错了一笔交易记录,即“转账2”,此时需要将“转账2”先进行冲销操作,然后再补充操作“转账4元”。
图4-图6对历史文件进行回滚处理之后,并重新备份目标节点对应的清算文件(即图4-图6中的历史文件1)。
在本说明书的一个实施例中,S110~S140为差异化回滚流程,即中断清算流程之后,在节点距离小于第一预设阈值;或者,差异数据的数量小于第二预设阈值的情况下,基于目标节点对应的差异数据进行差异回滚;反之,在节点距离不小于第一预设阈值;或者,差异数据的数量不小于第二预设阈值的情况下,采用全量回滚(如图3中的节点6),即回滚至备份点6,对目标节点4对应的清算文件重新进行清算。另外,在图3中,在对目标节点重新清算之后,继续对节点5进行清算,以恢复原先中断的清算流程。
在本说明的一个实施例中,还可以采取人工干预,由人确定回滚方式,例如,在基金公司清算完之后,可以由相关人员,核对清算结果是否有错误,在存在错误的情况下,人为选择采用差异化回滚,还是采用全量回滚。
在本说明书的一个实施例中,在基金公司核对发现目标节点处操作有误,此时不需要重新上传清算文件,而是基于当前清算节点和目标节点,确定是否采用差异化回滚;如果当前清算节点对应的流程相较目标节点对应的流程领先较少时,则采用差异化回滚,回滚至目标节点,重新执行后续清算流程;如果当前清算节点对应的流程相较目标节点对应的流程领先多时,则回滚至备份点。
图7为本说明书的另一个实施例提供的回滚处理方法的流程图。如图7所示,该回滚处理方法可以包括:
S710:接收清算文件;
S720:确定当前清算节点和目标节点在清算流程中的节点距离;
S730:在节点距离小于第一预设阈值的情况下,比对清算文件和目标节点对应的历史文件,得到差异数据;
S740:在差异数据的数量小于第二预设阈值的情况下,基于差异数据进行回滚。
根据上述的本说明书一个或多个实施例,通过在接收到清算文件后,确定当前清算节点与目标节点在清算流程中的节点距离;在节点距离小于第一预设阈值的情况下,比对清算文件和目标节点对应的历史文件,得到差异数据;在差异数据小于第二预设阈值的情况下,基于差异数据进行回滚。对差异数据进行回滚,不需要进行全量数据回滚,回滚数量的量级从几千万降低到个位数,降低了对数据库CPU和内存的消耗,也提高了清算时效。
图8为本说明书的一个实施例提供的回滚处理装置。如图8所示,该回滚处理装置800可以包括:
流程管控模块,用于接收清算文件,以及调用决策模块810、比对模块820、业务处理模块830和备份模块840;
决策模块810,用于确定当前清算节点和目标节点在清算流程中的节点距离;
比对模块820,用于在节点距离小于第一预设阈值的情况下,比对清算文件和目标节点对应的历史文件,得到差异数据;
业务处理模块830,用于基于差异数据进行回滚。
根据上述的本说明书一个或多个实施例,通过确定的当前清算节点与目标节点在清算流程中的节点距离;在所述节点距离小于第一预设阈值的情况下,比对所述清算文件和目标节点对应的历史文件,得到差异数据;基于所述差异数据进行回滚。对差异数据进行回滚,不需要进行全量数据回滚,回滚数量的量级从几千万降低到个位数,降低了对数据库CPU和内存的消耗,也提高了清算时效。
决策模块810,还用于判断差异数据的数量是否小于第二预设阈值;
业务处理模块830,还用于在差异数据的数量小于第二预设阈值的情况下,基于差异数据进行回滚。
可选的,比对模块820,具体用于:
根据交易记录的标识分别拆分清算文件和历史文件;
比对拆分后的清算文件和拆分后的历史文件,得到差异数据。
可选的,业务处理模块830,包括:冲销单元831;
冲销单元831,用于在所述历史文件包括的交易记录的笔数多于所述清算文件包括的交易记录的笔数情况下,对差异数据对应的交易记录进行冲销操作。
可选的,业务处理模块830,包括:补充单元832;
补充单元832,用于在所述历史文件包括的交易记录的笔数少于所述清算文件包括的交易记录的笔数的情况下,补充差异数据对应的交易记录。
可选的,业务处理模块830,包括:冲销单元831和补充单元832;
冲销单元831,用于在所述历史文件包括差异数据,且所述差异数据为错误交易记录的情况下,对差异数据对应的交易记录进行冲销操作;
比对模块820,用于比对冲销后的历史文件和清算文件,得到第一差异数据;
补充单元832,用于补充所述第一差异数据对应的交易记录。
可选的,回滚处理装置,还包括:备份模块840;备份模块840,用于:
在执行清算流程过程中,针对清算节点备份对应的历史文件;和/或
在当前清算节点进行回滚处理之后,由备份模块840备份清算文件。
在本说明书的一个实施例中,如图9所示,该回滚处理方法可以包括:
正常业务流程处理步骤如下:
S901:流程管控模块负责业务流程推进;
S903:流程进行中,流程管控模块在各节点调用备份模块进行数据备份。
服务端可以运行一个流程管控模块,用于控制图8中的模块进行相应操作。
一次完整的回滚主要包括以下步骤:
S905:基金公司接到通知(即清算文件重给请求),当日清算文件需要重新处理,此时基金公司接收到第三方支付机构重新上传的清算文件,并操作流程管控模块进行文件回滚;
S907:流程管控模块中断当前清算流程;
S909:流程管控模块调用决策模块进行决策;
S911:决策模块根据当前清算节点和目标节点在清算流程中的节点距离,判断是否回滚到备份点,当节点距离小于第一阈值时,执行S913;反之,回滚至备份点;
S913:由流程管控模块调用比对模块进行历史文件和清算文件比对;
由于每日清算的文件量比较大,本说明书,通过采用分布式批量比对,即将文件拆分成之后再进行比对,并找出差异数据,然后将差异数据提交给决策模块;
决策模块将差异数据的数量和设置的第二阈值进行比对,若差异数据的差异数量小于或等于第二阈值,执行S915~S917;反之,回滚至备份点;
S915:对于清算文件比历史文件少交易记录的情况,进行冲销操作,主要包括下游处理的回滚,交易记录的回滚,账务处理的回滚等,视业务情况决定;
S917:对于清算文件比历史文件多交易记录的情况,进行补充操作,主要对少的交易记录进行补充,包括推进下游处理,推进交易记录,推进账务处理等,视业务情况决定;
S919:对于历史文件中错的交易记录的情况,先进行冲销,再进行补充,步骤同S915和S917;
S921:回滚完成后,通知流程管控模块,流程管控模块负责推进后续流程。
根据上述的本说明书一个或多个实施例,通过接收到的清算文件,确定当前清算节点与目标节点在清算流程中的节点距离;在所述节点距离小于第一预设阈值的情况下,比对所述清算文件和目标节点对应的历史文件,得到差异数据;基于所述差异数据进行回滚。对差异数据进行回滚,不需要进行全量数据回滚,回滚数量的量级从几千万降低到个位数,降低了对数据库CPU和内存的消耗,也提高了清算时效。
图10为本说明书的一个实施例提供的回滚处理设备示意性框图,能够实现根据本发明实例提供的回滚处理方法和装置的计算设备的示例性硬件架构的结构图。
计算设备1000包括输入设备1001、输入接口1002、中央处理器1003、存储器1004、输出接口1005、以及输出设备1006。其中,输入接口1002、中央处理器1003、存储器1004、以及输出接口1005通过总线1010相互连接,输入设备1001和输出设备1006分别通过输入接口1002和输出接口1005与总线1010连接,进而与计算设备1000的其他组件连接。
具体地,输入设备1001接收来自外部的输入信息,并通过输入接口1002将输入信息传送到中央处理器1003;中央处理器1003基于存储器1004中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器1004中,然后通过输出接口1005将输出信息传送到输出设备1006;输出设备1006将输出信息输出到计算设备1000的外部供用户使用。
图10所示的计算设备也可以被实现为包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1至图9描述的回滚处理方法和装置。
根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以从网络上被下载和安装,和/或从可拆卸存储介质被安装。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令,当其在计算机上运行时,使得计算机执行上述各个实施例中描述的方法。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。
以上所描述的装置实例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
需要明确的是,本发明并不局限于上文实施例中所描述并在图中示出的特定配置和处理。为了描述的方便和简洁,这里省略了对已知方法的详细描述,并且上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域的技术人员可以清楚地了解到,本发明的方法过程并不限于所描述和示出的具体步骤,任何熟悉本技术领域的技术人员在领会本发明的精神后,在本发明揭露的技术范围内作出各种改变、修改和添加,或者等效替换以及改变步骤之间的顺序,这些修改或替换都应涵盖在本发明的保护范围之内。