CN112650562B - 数据处理方法、装置、设备及可读存储介质 - Google Patents
数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112650562B CN112650562B CN202011513630.0A CN202011513630A CN112650562B CN 112650562 B CN112650562 B CN 112650562B CN 202011513630 A CN202011513630 A CN 202011513630A CN 112650562 B CN112650562 B CN 112650562B
- Authority
- CN
- China
- Prior art keywords
- server
- transaction
- logic operation
- operation result
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据处理方法,包括:目标服务器接收到第一业务逻辑操作结果以及第一事务id时,基于所第一业务逻辑操作结果确定是否成功调用第一服务器;若成功调用第一服务器,则发送第二调用请求至第二服务器;接收到第一服务器第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于第二业务逻辑操作结果确定是否成功调用第二服务器;若调用第二服务器失败,则基于第一事务id以及所述第二事务id执行数据回滚操作。本发明还公开了一种数据处理装置、设备及可读存储介质。本发明无需通过重试机制重试而直接进行数据回滚,进而确保分布式事务的一致性,避免遵守分布式事务协议的分布式事务中事务管理者出现故障时服务不可用的现象。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、设备及可读存储介质。
背景技术
在分布式系统中,一个分布式事务的业务逻辑往往需要多个系统进行处理,但最终要保证多个系统处理的一致性。如计算密集型的业务场景,为了加快计算的速度,会将计算拆分到多个系统进行并行计算,多个系统计算完毕后需要汇总到数据库,因此,业务上会要求多个系统的计算结果要正确的体现到数据库中,不应出现遗漏等错误。再比如同时存在两个系统A和B,A是积分系统,B是订单系统。B系统在下订单时需要调用A系统进行积分扣减,业务要求订单使用积分时,若订单成功,积分必须扣减,若订单失败,积分不得扣减。
目前常采用两阶段提交(two phase commit protocol,2PC)的方式来实现分布式事务的一致性。然而,由于每个参与方都是在发起方的协调下,各自直接与数据库进行交互的,这样,每个参与方对数据库的操作本质上都是一个单独的事务,因此,在一阶段时,可能会出现一部分参与方提交成功,而另一部分参与方提交失败的情况,这时就会出现事务中间状态,造成难以及时保证分布式事务的一致性。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种数据处理方法、装置、设备及可读存储介质,旨在解决现有的两阶段提交方式容易出现事务中间状态,难以及时保证分布式事务的一致性的技术问题。
为实现上述目的,本发明提供一种数据处理方法,所述数据处理方法包括以下步骤:
目标服务器接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第一事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器;
若成功调用所述第一服务器,则发送第二调用请求至第二服务器,其中,所述第二服务器对所述第二调用请求对应的数据库进行第一事务操作,根据所述第一事务操作的操作结果确定第二业务逻辑操作结果,根据所述第一事务操作对应的数据库确定第二事务id,并反馈第二业务逻辑操作结果以及第二事务id;
接收到第一服务器所述第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器;
若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作。
进一步地,所述若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作的步骤包括:
基于第一事务id发送第一回滚指令至第一服务器,以供第一服务器基于所述第一事务id执行数据回滚操作;
基于第二事务id发送第二回滚指令至第二服务器,以供所述第二服务器基于第二事务id执行数据回滚操作。
进一步地,所述第一服务器包括多个,所述基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器的步骤包括:
判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;
若各个所述第一业务逻辑操作结果中未存在所述第一目标结果,则判定成功调用所述第一服务器;
若各个所述第一业务逻辑操作结果中存在所述第一目标结果,则判定调用所述第一服务器失败。
进一步地,所述数据处理方法还包括:
若调用所述第一服务器失败,则基于第一事务id发送第一回滚指令至第一服务器,以供第一服务器基于所述第一事务id执行数据回滚操作。
进一步地,所述判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果的步骤包括:
若预设时长内接收到的第一业务逻辑操作结果的数量达到预设数量,则判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;
若预设时长内接收到的第一业务逻辑操作结果的数量未达到预设数量,则判定调用所述第一服务器失败。
进一步地,所述第二服务器包括多个,所述基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器的步骤包括:
判断各个所述第二业务逻辑操作结果中是否存在与第二预设值不相等的第二目标结果;
若各个所述第二业务逻辑操作结果中存在所述第二目标结果,则判定调用第二服务器失败。
进一步地,所述目标服务器接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第二事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器的步骤之前,所述数据处理方法还包括:
目标服务器发送第一调用请求至第一服务器,其中,所述第一服务器根据所述第一调用请求对对应的数据库进行第二事务操作,根据所述第二事务操作的操作结果确定第一业务逻辑操作结果,根据所述第二事务操作对应的数据库确定第一事务id,并反馈第一业务逻辑操作结果以及第一事务id。
此外,为实现上述目的,本发明还提供一种数据处理装置,所述数据处理装置包括:
第一确定模块,用于接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第二事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器;
发送模块,用于若成功调用所述第一服务器,则发送第二调用请求至第二服务器,其中,所述第二服务器对所述第二调用请求对应的数据库进行第一事务操作,根据所述第一事务操作的操作结果确定第二业务逻辑操作结果,根据所述第一事务操作对应的数据库确定第二事务id,并反馈第二业务逻辑操作结果以及第二事务id;
第二确定模块,用于接收到第一服务器所述第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器;
数据回滚模块,用于若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作。
此外,为实现上述目的,本发明还提供一种数据处理设备,所述数据处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据处理程序,所述数据处理程序被所述处理器执行时实现前述的数据处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现前述的数据处理方法的步骤。
本发明通过目标服务器接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第二事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器;接着若成功调用所述第一服务器,则发送第二调用请求至第二服务器,其中,所述第二服务器对所述第二调用请求对应的数据库进行第一事务操作,并确定所述第一事务操作的第二业务逻辑操作结果以及第一事务操作对应的数据库的第二事务id,并反馈第二业务逻辑操作结果以及第二事务id;而后接收到第一服务器所述第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器;然后若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作,能够根据第一事务id以及第二事务id实现数据回滚,无需通过重试机制重试而直接进行数据回滚,以在出现不一致性时及时恢复操作后的数据库,进而确保分布式事务的一致性。同时,无需都遵守分布式事务协议,避免遵守分布式事务协议的分布式事务中事务管理者出现故障时服务不可用的现象。
附图说明
图1是本发明实施例方案涉及的硬件运行环境中数据处理设备的结构示意图;
图2为本发明数据处理方法第一实施例的流程示意图;
图3为本发明数据处理方法第二实施例中若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作的步骤的细化流程示意图;
图4本发明数据处理装置一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境中数据处理设备的结构示意图。
本发明实施例数据处理设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的数据处理设备结构并不构成对数据处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据处理程序。
在图1所示的数据处理设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据处理程序,并执行以下数据处理方法的各个实施例中的操作。
本发明还提供一种数据处理方法,参照图2,图2为本发明数据处理方法第一实施例的流程示意图。
在本实施例中,该数据处理方法包括:
步骤S100,目标服务器接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第一事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器;
本实施例中,在执行本发明的数据处理方法之前,在系统中设置服务调用响应的协议规则,以使服务响应方在响应体多响应包括transactionCode和transactionId在内的两个字段。其中,transactionCode表示响应方业务逻辑操作结果,即响应方执行请求时的业务逻辑操作的操作结果,例如,在事务操作正常执行(包括数据库操作成功),并正常操作数据库事务时,则该transactionCode为预设值,例如600,否则,将该transactionCode设置为其他值,例如500。transactionId表示响应方本次操作数据库的事务id,该事务id数据库自带,即通过对库存服务所对应的数据库的进行本次操作的事务ID。
本实施例中,目标服务器根据接收到的任务请求确定需要调用的第一服务器,并将第一调用请求发生至第一服务器,第一服务器执行该第一调用请求,得到并反馈第一业务逻辑操作结果以及第一事务id。目标服务器接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第一事务id时,该目标服务器基于第一业务逻辑操作结果确定是否成功调用第一服务器,具体地,若第一业务逻辑操作与第一预设值匹配,则成功调用第一服务器。
步骤S200,若成功调用所述第一服务器,则发送第二调用请求至第二服务器,其中,所述第二服务器对所述第二调用请求对应的数据库进行第一事务操作,根据所述第一事务操作的操作结果确定第二业务逻辑操作结果,根据所述第一事务操作对应的数据库确定第二事务id,并反馈第二业务逻辑操作结果以及第二事务id;
本实施例中,若判定目标服务器成功调用所述第一服务器,则目标服务器根据接收到的任务请求确定需要调用的第二服务器,并发送第二调用请求至第二服务器。在接收到该第二调用请求时,第二服务器对第二调用请求对应的数据库进行第一事务操作,即根据第二调用请求确定对应的数据库,并对对应的数据库进行第一事务操作,并在第一事务操作完成时,根据所述第一事务操作的操作结果确定第二业务逻辑操作结果,根据所述第一事务操作对应的数据库确定第二事务id,例如,在第一事务操作正常执行且正常操作数据库事务时,则第二服务器将该第二业务逻辑操作结果设置为第二预设值,例如600,否则,第二服务器将该第二业务逻辑操作结果设置为其他预设值,例如500。第二事务id为第二服务器进行数据库操作时,所操作的事务的ID。而后,反馈第二业务逻辑操作结果以及第二事务id至目标服务器。
步骤S300,接收到第一服务器所述第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器;
本实施例中,目标服务器接收到第二服务器基于第二调用请求反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器,例如,若第二业务逻辑操作与第二预设值匹配,则判定目标服务器成功调用第二服务器,否则判定目标服务器调用所述第二服务器失败。
步骤S400,若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作。
本实施例中,若根据第二业务逻辑操作判定调用所述第二服务器失败,则目标服务器基于所述第一事务id以及所述第二事务id执行数据回滚操作,具体地,根据第一事务id执行第一服务器的数据回滚操作,根据第二事务id执行第二服务器的数据回滚操作,进而在分布式事务出现数据不一致性时,能够根据第一事务id以及第二事务id准确实现数据回滚,以及时确保分布式事务的一致性。
同时,与现有的强一致性相比,无需都会遵守分布式事务协议,进而避免在分布式事务中引入事务管理者和资源管理者,通过事务管理者和资源管理者确保分布式事务的一致性的情况,避免事务管理者出现故障时服务不可用的现象。
其中,目标服务器可以为交易服务,第一服务器可以为库存服务,第二服务器可以为下单服务,或者,第一服务器可以为下单服务,第二服务器可以为积分服务。
进一步地,在一实施例中,步骤S100之前,该数据处理方法还包括:
步骤S500,目标服务器发送第一调用请求至第一服务器,其中,所述第一服务器根据所述第一调用请求对对应的数据库进行第二事务操作,根据所述第二事务操作的操作结果确定第一业务逻辑操作结果,根据所述第二事务操作对应的数据库确定第一事务id,,并反馈第一业务逻辑操作结果以及第一事务id。
本实施例中,目标服务器根据接收到的任务请求确定需要调用的第一服务器,并发送第一调用请求至第一服务器。在接收到该第一调用请求时,第一服务器对第一调用请求对应的数据库进行第二事务操作,即根据第一调用请求确定对应的数据库,并对对应的数据库进行第二事务操作,并在第二事务操作完成时,根据所述第二事务操作的操作结果确定第一业务逻辑操作结果,根据所述第二事务操作对应的数据库确定第一事务id,例如,在事务操作正常执行且正常操作数据库事务时,则第一服务器将该第一业务逻辑操作结果设置为第一预设值,例如600,否则,第一服务器将该第一业务逻辑操作结果设置为其他预设值,例如500。第一事务id为第一服务器进行数据库操作时,所操作的事务的ID。而后,反馈第一业务逻辑操作结果以及第一事务id至目标服务器。
本实施例提出的数据处理方法,通过目标服务器接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第二事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器;接着若成功调用所述第一服务器,则发送第二调用请求至第二服务器,其中,所述第二服务器对所述第二调用请求对应的数据库进行第一事务操作,根据所述第一事务操作的操作结果确定第二业务逻辑操作结果,根据所述第一事务操作对应的数据库确定第二事务id,并反馈第二业务逻辑操作结果以及第二事务id;而后接收到第一服务器所述第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器;然后若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作,能够根据第一事务id以及第二事务id实现数据回滚,无需通过重试机制重试而直接进行数据回滚,以在出现不一致性时及时恢复操作后的数据库,进而确保分布式事务的一致性。同时,无需都会遵守分布式事务协议,避免遵守分布式事务协议的分布式事务中事务管理者出现故障时服务不可用的现象。
基于第一实施例,提出本发明数据处理方法的第二实施例,参照图3,在本实施例中,步骤S400包括:
步骤S410,基于第一事务id发送第一回滚指令至第一服务器,以供第一服务器基于所述第一事务id执行数据回滚操作;
步骤S420,基于第二事务id发送第二回滚指令至第二服务器,以供所述第二服务器基于第二事务id执行数据回滚操作。
本实施例中,在基于所述第一事务id以及所述第二事务id执行数据回滚操作时,目标服务器发送第一回滚指令至第一服务器,并发送第二回滚指令至第二服务器。其中,在接收到第一回滚指令时,第一服务器基于所述第一事务id执行数据回滚操作,具体地,第一服务器基于第一事务id确定第一待回滚数据以及对应的第一待回滚数据库,并基于第一待回滚数据对第一待回滚数据库进行数据回滚操作。同理,在接收到第二回滚指令时,第二服务器基于所述第二事务id执行数据回滚操作,即第二服务器基于第二事务id确定第二待回滚数据以及对应的第二待回滚数据库,并基于第二待回滚数据对第一待回滚数据库进行数据回滚操作,以实现数据的准确回滚。
本实施例提出的数据处理方法,通过基于第一事务id发送第一回滚指令至第一服务器,以供第一服务器基于所述第一事务id执行数据回滚操作;接着基于第二事务id发送第二回滚指令至第二服务器,以供所述第二服务器基于第二事务id执行数据回滚操作,能够通过第一事务id以及第二事务id准确实现数据回滚,提高数据回滚的准确性,进而及时确保分布式事务的一致性。
基于第一实施例,提出本发明数据处理方法的第三实施例,在本实施例中,第一服务器包括多个,步骤S100包括:
步骤S110,判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;
步骤S120,若各个所述第一业务逻辑操作结果中未存在所述第一目标结果,则判定成功调用所述第一服务器;
步骤S130,若各个所述第一业务逻辑操作结果中存在所述第一目标结果,则判定调用所述第一服务器失败。
本实施例中,第一服务器包括多个时,第一业务逻辑操作结果也包括多个,进而在确定是否成功调用所述第一服务器时,判断各个第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果,即第一业务逻辑操作结果是否全部等于第一预设值,若各个所述第一业务逻辑操作结果中未存在所述第一目标结果,则表明第一业务逻辑操作结果全部等于第一预设值,进而判定成功调用所述第一服务器,若各个所述第一业务逻辑操作结果中存在所述第一目标结果,则表明第一业务逻辑操作结果不全部等于第一预设值,进而判定调用所述第一服务器失败,进而能够根据第一业务逻辑操作结果准确判断是否成功调用第一服务器。
进一步地,在一实施例中,步骤S110之后,该数据处理方法还包括:
步骤a,若调用所述第一服务器失败,则基于第一事务id发送第一回滚指令至第一服务器,以供第一服务器基于所述第一事务id执行数据回滚操作。
本实施例中,若调用所述第一服务器失败,则基于所述第一事务id执行数据回滚操作时,具体地,目标服务器发送第一回滚指令至第一服务器,在接收到第一回滚指令时,第一服务器基于所述第一事务id执行数据回滚操作,具体地,第一服务器基于第一事务id确定第一待回滚数据以及对应的第一待回滚数据库,并基于第一待回滚数据对第一待回滚数据库进行数据回滚操作。
进一步地,又一实施例中,步骤S110包括:
步骤b,若预设时长内接收到的第一业务逻辑操作结果的数量达到预设数量,则判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;
步骤c,若预设时长内接收到的第一业务逻辑操作结果的数量未达到预设数量,则判定调用所述第一服务器失败。
本实施例中,在调用第一服务器时,可能存在无法接受某些第一服务器反馈的数据的问题,因此,根据第一服务器的数量设置预设数量,例如,预设数量为第一服务器的数量的80%,预设时长根据第一调用请求所对应的事务操作进行合理设置,以确保第一调用请求所对应的事务操作能够自行完成。
本实施例中,若预设时长内接收到的第一业务逻辑操作结果的数量达到预设数量,即发送第一调用请求之后的预设时长内接收到大于预设数量的第一业务逻辑操作结果,则判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果。若预设时长内接收到的第一业务逻辑操作结果的数量未达到预设数量,则表明当前存在多个第一服务器无法正常提交第一调用请求对应的第一业务逻辑操作结果以及第一事务id,此时,判定调用所述第一服务器失败。
本实施例提出的数据处理方法,通过判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;接着若各个所述第一业务逻辑操作结果中未存在所述第一目标结果,则判定成功调用所述第一服务器;而后若各个所述第一业务逻辑操作结果中存在所述第一目标结果,则判定调用所述第一服务器失败,能够根据第一业务逻辑操作结果准确判断是否成功调用第一服务器,提高数据回滚操作或者继续执行第二服务器的准确性。
基于第一实施例,提出本发明数据处理方法的第四实施例,在本实施例中,第二服务器包括多个,步骤S300包括:
步骤S310,判断各个所述第二业务逻辑操作结果中是否存在与第二预设值不相等的第二目标结果;
步骤S320,若各个所述第二业务逻辑操作结果中存在所述第二目标结果,则判定调用第二服务器失败。
本实施例中,第二服务器包括多个时,第二业务逻辑操作结果也包括多个,进而在确定是否成功调用所述第二服务器时,判断各个第二业务逻辑操作结果中是否存在与第二预设值不相等的第二目标结果,即第二业务逻辑操作结果是否全部等于第二预设值,若各个所述第二业务逻辑操作结果中未存在所述第二目标结果,则表明第一业务逻辑操作结果全部等于第二预设值,进而判定成功调用所述第二服务器,若各个所述第二业务逻辑操作结果中存在所述第二目标结果,则表明第二业务逻辑操作结果不全部等于第二预设值,进而判定调用所述第二服务器失败,进而能够根据第二业务逻辑操作结果准确判断是否成功调用第二服务器。
进一步地,又一实施例中,步骤S310包括:
步骤d,若预设时间间隔内接收到的第二业务逻辑操作结果的数量达到预设值,则判断各个所述第二业务逻辑操作结果中是否存在与第二预设值不相等的第二目标结果;
步骤e,若预设时间间隔内接收到的第二业务逻辑操作结果的数量未达到预设值,则判定调用所述第二服务器失败。
本实施例中,在调用第二服务器时,可能存在无法接受某些第二服务器反馈的数据的问题,因此,根据第二服务器的数量设置预设值,例如,预设值为第二服务器的数量的80%,预设时间间隔根据第二调用请求所对应的事务操作进行合理设置,以确保第二调用请求所对应的事务操作能够自行完成。
本实施例中,若预设时间间隔内接收到的第二业务逻辑操作结果的数量达到预设值,即发送第二调用请求之后的预设时长内接收到大于预设值的第一业务逻辑操作结果,则判断各个所述第二业务逻辑操作结果中是否存在与第二预设值不相等的第二目标结果。若预设时间间隔内接收到的第二业务逻辑操作结果的数量未达到预设值,则表明当前存在多个第二服务器无法正常提交第二调用请求对应的第二业务逻辑操作结果以及第二事务id,此时,判定调用所述第二服务器失败。
本实施例提出的数据处理方法,通过判断各个所述第二业务逻辑操作结果中是否存在与第二预设值不相等的第二目标结果;接着若各个所述第二业务逻辑操作结果中存在所述第二目标结果,则判定调用第二服务器失败,能够根据第二业务逻辑操作结果准确判断是否成功调用第二服务器,进一步提高数据回滚的准确性,以及时确保分布式事务的一致性。
参照图4,图4为本发明数据处理装置一实施例的功能模块示意图。
本实施例中,数据处理装置包括:
第一确定模块10,用于接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第二事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器;
发送模块20,用于若成功调用所述第一服务器,则发送第二调用请求至第二服务器,其中,所述第二服务器对所述第二调用请求对应的数据库进行第一事务操作,根据所述第一事务操作的操作结果确定第二业务逻辑操作结果,根据所述第一事务操作对应的数据库确定第二事务id,并反馈第二业务逻辑操作结果以及第二事务id;
第二确定模块30,用于接收到第一服务器所述第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器;
数据回滚模块40,用于若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作。
进一步地,数据回滚模块40,还用于:
基于第一事务id发送第一回滚指令至第一服务器,以供第一服务器基于所述第一事务id执行数据回滚操作;
基于第二事务id发送第二回滚指令至第二服务器,以供所述第二服务器基于第二事务id执行数据回滚操作。
进一步地,第一确定模块10,还用于:
判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;
若各个所述第一业务逻辑操作结果中未存在所述第一目标结果,则判定成功调用所述第一服务器;
若各个所述第一业务逻辑操作结果中存在所述第一目标结果,则判定调用所述第一服务器失败。
进一步地,第一确定模块10,还用于:
若调用所述第一服务器失败,则基于第一事务id发送第一回滚指令至第一服务器,以供第一服务器基于所述第一事务id执行数据回滚操作。
进一步地,第一确定模块10,还用于:
若预设时长内接收到的第一业务逻辑操作结果的数量达到预设数量,则判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;
若预设时长内接收到的第一业务逻辑操作结果的数量未达到预设数量,则判定调用所述第一服务器失败。
进一步地,第二确定模块30,还用于:
判断各个所述第二业务逻辑操作结果中是否存在与第二预设值不相等的第二目标结果;
若各个所述第二业务逻辑操作结果中存在所述第二目标结果,则判定调用第二服务器失败。
进一步地,数据处理装置还包括:
目标服务器发送第一调用请求至第一服务器,其中,所述第一服务器根据所述第一调用请求对对应的数据库进行第二事务操作,根据所述第二事务操作的操作结果确定第一业务逻辑操作结果,根据所述第二事务操作对应的数据库确定第一事务id,并反馈第一业务逻辑操作结果以及第一事务id。
需要说明的是,数据处理装置的各个实施例与上述数据处理方法的各实施例基本相同,在此不再详细赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如上述中任一项所述的数据处理方法的步骤。
本发明计算机可读存储介质具体实施例与上述数据处理方法的各实施例基本相同,在此不再详细赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件装置的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种数据处理方法,其特征在于,所述数据处理方法包括以下步骤:
目标服务器接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第一事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器;
若成功调用所述第一服务器,则发送第二调用请求至第二服务器,其中,所述第二服务器对所述第二调用请求对应的数据库进行第一事务操作,根据所述第一事务操作的操作结果确定第二业务逻辑操作结果,根据所述第一事务操作对应的数据库确定第二事务id,并反馈第二业务逻辑操作结果以及第二事务id;
接收到所述第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器;
若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作;
其中,所述若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作的步骤包括:
在调用所述第二服务器失败时,基于第一事务id发送第一回滚指令至第一服务器,以使所述第一服务器基于所述第一回滚指令确定第一待回滚数据以及对应的第一待回滚数据库并基于所述第一待回滚数据对所述第一待回滚数据库进行数据回滚操作;
和/或,基于第二事务id发送第二回滚指令至第二服务器,以使所述第二服务器基于所述第二回滚指令确定第二待回滚数据以及对应的第二待回滚数据库并基于所述第二待回滚数据对所述第二待回滚数据库进行数据回滚操作。
2.如权利要求1所述的数据处理方法,其特征在于,所述第一服务器包括多个,所述基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器的步骤包括:
判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;
若各个所述第一业务逻辑操作结果中未存在所述第一目标结果,则判定成功调用所述第一服务器;
若各个所述第一业务逻辑操作结果中存在所述第一目标结果,则判定调用所述第一服务器失败。
3.如权利要求2所述的数据处理方法,其特征在于,所述数据处理方法还包括:
若调用所述第一服务器失败,则基于第一事务id发送第一回滚指令至第一服务器,以供第一服务器基于所述第一事务id执行数据回滚操作。
4.如权利要求2所述的数据处理方法,其特征在于,所述判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果的步骤包括:
若预设时长内接收到的第一业务逻辑操作结果的数量达到预设数量,则判断各个所述第一业务逻辑操作结果中是否存在与第一预设值不相等的第一目标结果;
若预设时长内接收到的第一业务逻辑操作结果的数量未达到预设数量,则判定调用所述第一服务器失败。
5.如权利要求1所述的数据处理方法,其特征在于,所述第二服务器包括多个,所述基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器的步骤包括:
判断各个所述第二业务逻辑操作结果中是否存在与第二预设值不相等的第二目标结果;
若各个所述第二业务逻辑操作结果中存在所述第二目标结果,则判定调用第二服务器失败。
6.如权利要求1至5任一项所述的数据处理方法,其特征在于,所述目标服务器接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第二事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器的步骤之前,所述数据处理方法还包括:
目标服务器发送第一调用请求至第一服务器,其中,所述第一服务器对所述第一调用请求对应的数据库进行第二事务操作,根据所述第二事务操作的操作结果确定第一业务逻辑操作结果,根据所述第二事务操作对应的数据库确定第一事务id,并反馈第一业务逻辑操作结果以及第一事务id。
7.一种数据处理装置,其特征在于,所述数据处理装置包括:
第一确定模块,用于接收到第一服务器基于第一调用请求反馈的第一业务逻辑操作结果以及第二事务id时,基于所述第一业务逻辑操作结果确定是否成功调用所述第一服务器;
发送模块,用于若成功调用所述第一服务器,则发送第二调用请求至第二服务器,其中,所述第二服务器对所述第二调用请求对应的数据库进行第一事务操作,根据所述第一事务操作的操作结果确定第二业务逻辑操作结果,根据所述第一事务操作对应的数据库确定第二事务id,并反馈第二业务逻辑操作结果以及第二事务id;
第二确定模块,用于接收到第一服务器所述第二服务器反馈的第二业务逻辑操作结果以及第二事务id时,基于所述第二业务逻辑操作结果确定是否成功调用所述第二服务器;
数据回滚模块,用于若调用所述第二服务器失败,则基于所述第一事务id以及所述第二事务id执行数据回滚操作;
其中,所述数据回滚模块,还用于在调用所述第二服务器失败时,则基于第一事务id发送第一回滚指令至第一服务器,以使所述第一服务器基于所述第一回滚指令确定第一待回滚数据以及对应的第一待回滚数据库并基于所述第一待回滚数据对所述第一待回滚数据库进行数据回滚操作;和/或,基于第二事务id发送第二回滚指令至第二服务器,以使所述第二服务器基于所述第二回滚指令确定第二待回滚数据以及对应的第二待回滚数据库并基于所述第二待回滚数据对所述第二待回滚数据库进行数据回滚操作。
8.一种数据处理设备,其特征在于,所述数据处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据处理程序,所述数据处理程序被所述处理器执行时实现如权利要求1至6中任一项所述的数据处理方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如权利要求1至6中任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011513630.0A CN112650562B (zh) | 2020-12-18 | 2020-12-18 | 数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011513630.0A CN112650562B (zh) | 2020-12-18 | 2020-12-18 | 数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112650562A CN112650562A (zh) | 2021-04-13 |
CN112650562B true CN112650562B (zh) | 2024-03-08 |
Family
ID=75358845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011513630.0A Active CN112650562B (zh) | 2020-12-18 | 2020-12-18 | 数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650562B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102891849A (zh) * | 2012-09-25 | 2013-01-23 | 北京星网锐捷网络技术有限公司 | 业务数据同步方法、恢复方法及装置和网络设备 |
US9514006B1 (en) * | 2015-12-16 | 2016-12-06 | International Business Machines Corporation | Transaction tracking within a microprocessor |
CN106557514A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种分布式事务回滚方法及装置 |
CN108874947A (zh) * | 2018-06-05 | 2018-11-23 | 亚信科技(中国)有限公司 | 一种数据处理系统及数据处理方法 |
CN109697371A (zh) * | 2018-12-12 | 2019-04-30 | 泰康保险集团股份有限公司 | 数据库管理方法、装置、介质及电子设备 |
CN110022367A (zh) * | 2019-04-11 | 2019-07-16 | 软通动力信息技术(集团)有限公司 | 一种事务处理方法和事务处理系统 |
CN111539703A (zh) * | 2020-04-20 | 2020-08-14 | 车主邦(北京)科技有限公司 | 支付异常处理方法及系统 |
-
2020
- 2020-12-18 CN CN202011513630.0A patent/CN112650562B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102891849A (zh) * | 2012-09-25 | 2013-01-23 | 北京星网锐捷网络技术有限公司 | 业务数据同步方法、恢复方法及装置和网络设备 |
CN106557514A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种分布式事务回滚方法及装置 |
US9514006B1 (en) * | 2015-12-16 | 2016-12-06 | International Business Machines Corporation | Transaction tracking within a microprocessor |
CN108874947A (zh) * | 2018-06-05 | 2018-11-23 | 亚信科技(中国)有限公司 | 一种数据处理系统及数据处理方法 |
CN109697371A (zh) * | 2018-12-12 | 2019-04-30 | 泰康保险集团股份有限公司 | 数据库管理方法、装置、介质及电子设备 |
CN110022367A (zh) * | 2019-04-11 | 2019-07-16 | 软通动力信息技术(集团)有限公司 | 一种事务处理方法和事务处理系统 |
CN111539703A (zh) * | 2020-04-20 | 2020-08-14 | 车主邦(北京)科技有限公司 | 支付异常处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112650562A (zh) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492374B (zh) | 基于身份验证的系统登录方法、装置、服务器及存储介质 | |
CN107645476B (zh) | 请求处理方法和装置 | |
CN112099935B (zh) | 一种任务处理方法及装置 | |
CN111667334A (zh) | 审核失败订单处理方法、装置、计算机设备和存储介质 | |
CN111400330A (zh) | 任务处理方法、装置、设备及计算机可读存储介质 | |
CN112995262B (zh) | 分布式事务提交方法、系统及计算设备 | |
CN114185900B (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN115544044A (zh) | 一种数据一致性保持方法、装置、设备和存储介质 | |
CN113342503B (zh) | 实时进度反馈方法、装置、设备及存储介质 | |
CN112650562B (zh) | 数据处理方法、装置、设备及可读存储介质 | |
CN107465725B (zh) | 基于客户信息控制系统的异构长事务处理系统及方法 | |
CN114327799A (zh) | 分布式事务处理方法及装置、电子设备、存储介质 | |
CN107220818B (zh) | 网上支付方法及装置 | |
CN112596801A (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN114816684A (zh) | 业务处理方法、装置、设备、可读存储介质及产品 | |
GB2582509A (en) | Error handling | |
CN112988775B (zh) | 处理批量交易的方法、计算设备和存储介质 | |
US11500857B2 (en) | Asynchronous remote calls with undo data structures | |
CN114356596A (zh) | 分布式系统的消息处理方法和装置 | |
CN111309744A (zh) | 对象处理方法、装置、电子设备及计算机可读存储介质 | |
CN112769824B (zh) | 一种信息传输状态更新方法、终端、装置及存储介质 | |
CN113409109B (zh) | 订单创建方法、装置、服务器及存储介质 | |
CN116777017A (zh) | 一种网约车用户发起订单改派方法及装置 | |
CN111125676B (zh) | 联合授权方法和装置 | |
US20240152504A1 (en) | Data interaction method, apparatus, and electronic device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |