CN117992546A - 实现数据一致性的方法、装置、设备和计算机可读介质 - Google Patents
实现数据一致性的方法、装置、设备和计算机可读介质 Download PDFInfo
- Publication number
- CN117992546A CN117992546A CN202410167993.5A CN202410167993A CN117992546A CN 117992546 A CN117992546 A CN 117992546A CN 202410167993 A CN202410167993 A CN 202410167993A CN 117992546 A CN117992546 A CN 117992546A
- Authority
- CN
- China
- Prior art keywords
- target
- rollback
- processing method
- service processing
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 139
- 238000003672 processing method Methods 0.000 claims abstract description 114
- 238000012545 processing Methods 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 claims abstract description 28
- 230000009471 action Effects 0.000 claims abstract description 17
- 230000026676 system process Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 4
- 238000009825 accumulation Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000010354 integration Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 208000034423 Delivery Diseases 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
Landscapes
- Retry When Errors Occur (AREA)
Abstract
本申请公开一种实现数据一致性的方法、装置、设备和计算机可读介质,其中方法包括:响应于业务***的目标业务处理方法需执行回滚动作,为目标业务处理方法添加目标回滚注解信息;基于目标回滚注解信息,检测通过目标业务处理方法处理业务请求过程中业务***对多个外部***的远程调用事件;对每个远程调用事件进行信息记录,得到远程调用记录;响应于发生外部***的调用失败事件,根据目标回滚注解信息、远程调用记录和目标业务处理方法对应的目标切面,对多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。本申请提供的上述方法实施简单,开发者可以将其向业务***快速集成并实现,不需要增加第三方组件即可实现数据一致性处理。
Description
技术领域
本申请属于分布式***应用技术领域,尤其涉及一种实现数据一致性的方法、装置、设备和计算机可读介质。
背景技术
目前,在分布式***中,为满足业务需求,经常会出现一个业务***调用多个外部***的场景,通过各***间的协同来满足该业务需求,上述应用场景中,在某一个外部***调用失败情况下,需要已经被调用执行相关处理的***能够正确回滚,从而保证多个***之间的业务数据一致性。
已知技术的数据一致性解决方案,通过集成与使用第三方重量级组件来保证数据一致性,如集成seata等组件,seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能的分布式事务服务,seata主要通过利用事务资源(数据库、消息服务等)对XA(Extended Architecture)协议的支持,以XA协议的机制来管理分支事务,以此实现分布式***中数据的一致性。
然而,集成seata的操作过程比较繁琐,其原理理解比较困难,导致开发与维护也比较复杂,且维护成本高,对于简单的业务***来说,其落地性差,因此,提供一种简单、集成快捷、具有高落地性的数据一致性解决方案,成为本领域亟需解决的技术问题。
发明内容
有鉴于此,本申请公开一种实现数据一致性的方法、装置、设备和计算机可读介质,用于在解决分布式***数据一致性问题的前提下,保证其解决方案实施简单、集成快捷,具有高落地性。
具体方案如下:
一种实现数据一致性的方法,包括:
响应于业务***的目标业务处理方法需执行回滚动作,为所述目标业务处理方法添加目标回滚注解信息;所述目标回滚注解信息用于表征执行所述目标业务处理方法过程中,如果发生对外部***的调用失败事件,需进行数据回滚;
基于所述目标回滚注解信息,检测通过所述目标业务处理方法处理业务请求过程中,所述业务***对多个外部***的远程调用事件;
对每个远程调用事件进行信息记录,得到远程调用记录;
响应于发生对外部***的调用失败事件,根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,以使所述业务***以及所述多个外部***之间的业务数据一致;
其中,所述目标切面包括实现所述目标业务处理方法所需的数据回滚需执行的第一执行内容。
可选的,所述基于所述目标回滚注解信息,检测所述业务***通过所述目标业务处理方法处理业务请求过程中,所述业务***对多个外部***的远程调用事件,包括:
通过对携带有回滚注解信息的方法进行拦截,拦截所述业务***执行的所述目标业务处理方法,并保存所述目标业务处理方法携带的所述目标回滚注解信息;
响应于拦截到所述目标业务处理方法,检测通过所述目标业务处理方法处理所述业务请求过程中,所述业务***对多个外部***的远程调用事件。
可选的,所述目标回滚注解信息包括:发生对相应外部***的调用失败事件情况下,所述目标业务处理方法对应所需的回滚内容;
所述保存所述目标业务处理方法携带的所述目标回滚注解信息,包括:
至少将所述目标回滚注解信息中的所述回滚内容保存至本地线程对应的存储空间。
可选的,所述对每个远程调用事件进行信息记录,包括:
将每个远程调用事件涉及的第二执行内容记录并保存至本地线程副本对应的存储空间;所述第二执行内容包括远程调用事件所执行的类、方法、方法中使用的参数信息和是否调用成功的调用状态中的至少部分信息。
可选的,所述第一执行内容包括:发生对相应外部***的调用失败事件情况下,所述目标业务处理方法对应所需的回滚内容实现数据回滚所需的类和方法;
所述根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,包括:
根据所述远程调用记录,确定调用失败的目标外部***;
根据所述目标回滚注解信息,确定对所述目标外部***调用失败情况下,所述目标业务处理方法对应所需的目标回滚内容;
从所述目标切面的所述第一执行内容中获取对所述目标回滚内容进行数据回滚所需的目标类和在所述目标类中所需的目标方法,基于所述目标类中的所述目标方法对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。
可选的,所述基于所述目标类中的所述目标方法对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,包括:
从所述远程调用记录中提取执行所述目标方法所需的参数信息;
将所述目标方法所需的参数信息和所述目标方法的程序代码组装为对应的可执行代码,通过执行所述可执行代码,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。
可选的,所述目标切面为SpringAop切面。
一种实现数据一致性的装置,包括:
注解添加单元,用于响应于业务***的目标业务处理方法需执行回滚动作,为所述目标业务处理方法添加目标回滚注解信息;所述目标回滚注解信息用于表征执行所述目标业务处理方法过程中,如果发生对外部***的调用失败事件,需进行数据回滚;
检测单元,用于基于所述目标回滚注解信息,检测所述业务***通过所述目标业务处理方法处理业务请求过程中,所述业务***对多个外部***的远程调用事件;
记录单元,用于对每个远程调用事件进行信息记录,得到远程调用记录;
回滚单元,用于响应于发生对外部***的调用失败事件,根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,以使所述业务***以及所述多个外部***之间的业务数据一致;
其中,所述目标切面包括实现所述目标业务处理方法所需的数据回滚需执行的第一执行内容。
一种电子设备,包括:
存储器,用于至少存储一组计算机指令集;
处理器,用于通过执行所述存储器中存储的所述指令集,实现如上文任一项所述的实现数据一致性的方法。
一种计算机可读介质,其上存储有计算机指令集,所述计算机指令集在被处理器执行时,用于实现如上文任一项所述的实现数据一致性的方法。
综上所述,本申请提供了一种实现数据一致性的方法、装置、设备和计算机可读介质,其中方法包括:响应于业务***的目标业务处理方法需执行回滚动作,为所述目标业务处理方法添加目标回滚注解信息;基于所述目标回滚注解信息,检测通过所述目标业务处理方法处理所述业务请求过程中,所述业务***对多个外部***的远程调用事件;对每个远程调用事件进行信息记录,得到远程调用记录;响应于发生外部***的调用失败事件,根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,以使所述业务***以及所述多个外部***之间的业务数据一致;其中,所述目标切面包括所述目标业务处理方法的数据回滚所需的相应第一执行内容。
本申请通过对需执行回滚动作的目标业务处理方法添加回滚注解信息,基于回滚注解信息检测对外部***的远程调用事件并进行远程调用记录,如果出现外部***调用失败,利用切面如SpringAop切面并结合回滚注解信息和远程调用记录进行数据回滚,以此实现了分布式***之间的业务数据一致性。与已知技术的重量级组件相比,本申请提供的上述方法实施简单,开发者可以将其向业务***快速集成并实现,不需要增加第三方重量级组件即可实现数据一致性处理,从而本申请在解决了分布式***数据一致性问题的前提下,还具备实施简单、集成快捷,落地性高等技术效果。
附图说明
结合附图并参考以下具体实施方式,本申请各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1是本申请提供的实现数据一致性的方法流程图;
图2是本申请提供的一应用示例中实现数据一致性的处理流程图;
图3是本申请提供的实现数据一致性的装置的组成结构图;
图4是本申请提供的电子设备的组成结构图。
具体实施方式
下面将参照附图更详细地描述本申请的实施例。虽然附图中显示了本申请的某些实施例,然而应当理解的是,本申请可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本申请。应当理解的是,本申请的附图及实施例仅用于示例性作用,并非用于限制本申请的保护范围。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本申请中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本申请中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本申请实施例提供一种实现数据一致性的方法、装置、设备和计算机可读介质,参见图1所示的实现数据一致性的方法流程图,本申请公开的实现数据一致性的方法,包括以下各处理步骤:
步骤101、响应于业务***的目标业务处理方法需执行回滚动作,为所述目标业务处理方法添加目标回滚注解信息;所述目标回滚注解信息用于表征执行所述目标业务处理方法过程中,如果发生对外部***的调用失败事件,需进行数据回滚。
本申请实施例中,目标业务处理方法需执行回滚动作,具体是指,目标业务处理方法在出现对外部***(目标业务处理方法所属的业务***之外的其他业务***)调用失败情况下,需进行数据回滚。
可选的,可通过确定目标业务处理方法在运行过程中是否需要执行多个外部***调用,来判定目标业务处理方法是否需执行回滚动作,其中,若目标业务处理方法在运行过程中需要执行多个外部***调用,则可判定目标业务处理方法需执行回滚动作,否则,则判定目标业务处理方法无需执行回滚动作。
在目标业务处理方法需执行回滚动作情况下,本申请实施例在调用目标业务处理方法以对业务请求进行处理之前,为所述目标业务处理方法添加目标回滚注解信息,可选的,可以在业务***对业务请求进行处理之前,预先通过预处理为业务***的需执行回滚动作的目标业务处理方法添加目标回滚注解信息,也可以在业务***获得业务请求,并确定出业务请求对应的目标业务处理方法需执行回滚动作情况下,实时为目标业务处理方法添加对应的目标回滚注解信息,对此不限制,只要在调用目标业务处理方法以对业务请求进行处理之前,完成对目标业务处理方法的目标回滚注解信息增添即可。
其中,为目标业务处理方法添加目标回滚注解信息,具体可以是指,为目标业务处理方法的相关实现代码(如函数代码)添加目标回滚注解信息,所添加的目标回滚注解信息可以包括但不限于,发生对相应外部***的调用失败事件情况下,目标业务处理方法对应所需的回滚内容。
目标业务处理方法对应所需的回滚内容,可以进一步包括但不限于以下信息中的至少部分信息:目标业务处理方法针对相应外部***调用需回滚的类、在所需回滚的类中需回滚的方法、在需回滚的方法中需回滚的参数等信息。
以所述业务请求为订单处理请求、所述业务***为订单***为例,所述目标业务处理方法相应可以是订单处理方法,假设该订单处理方法的处理逻辑为:针对订单处理请求所指示的(客户)已付款订单,在订单***调用积分***通过积分累加处理向客户赋予一定数值的积分,并调用仓储***通过通知单状态处理将该订单的状态调整为货物出库状态,以进行货物出库,也就是说,在通过所述目标业务处理方法处理所述业务请求过程中,所述业务***(订单***)需调用的多个外部***包括积分***和仓储***,在通过调用积分***赋予客户一定积分情况下,需同时保证仓储***中通知单状态为出货状态以能进行正常出货,两者之中任一种处理失败,即对积分***和仓储***中的任一外部***调用失败,另一已经调用成功从而执行了对应处理的外部***应进行数据回滚,以保证不同***之间业务数据的一致性。从而为目标业务处理方法添加的所述目标回滚注解信息,可以包括:a、对积分***调用失败情况下,需将仓储***的通知单状态处理方法及其涉及的通知单状态参数(即回滚内容)进行回滚;b、对仓储***调用失败情况下,需将积分***的积分累加方法及其涉及的累加数量参数(即回滚内容)进行回滚。
步骤102、基于所述目标回滚注解信息,检测通过所述目标业务处理方法处理所述业务请求过程中,所述业务***对多个外部***的远程调用事件。
其中,具体可通过对携带有回滚注解信息的方法进行拦截,拦截所述业务***执行的所述目标业务处理方法,并保存所述目标业务处理方法携带的所述目标回滚注解信息;在此基础上,响应于拦截到所述目标业务处理方法,检测通过所述业务处理方法处理所述业务请求过程中,所述业务***对多个外部***的远程调用事件。
在保存所述目标业务处理方法携带的所述目标回滚注解信息时,可选的,可至少将所述目标回滚注解信息中的所述回滚内容保存至本地线程对应的存储空间。所述本地线程为用于执行本申请所提供的实现数据一致性的方法的本地线程。
步骤103、对每个远程调用事件进行信息记录,得到远程调用记录。
可选的,具体可将每个远程调用事件涉及的第二执行内容保存至本地线程副本对应的存储空间;所述第二执行内容包括远程调用事件所执行的类、方法、方法中使用的参数信息(如通知单状态、本次向客户赋予积分所累加的积分值等)和是否调用成功的调用状态中的至少部分信息。
步骤104、响应于发生对外部***的调用失败事件,根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,以使所述业务***以及所述多个外部***之间的业务数据一致。
其中,其中,所述目标切面包括实现所述目标业务处理方法所需的数据回滚需执行的第一执行内容。
本申请实施例中,所采用的切面如所述目标切面,具体为SpringAop切面。
可选的,第一执行内容可以包括但不限于,发生对相应外部***的调用失败事件情况下,所述目标业务处理方法对应所需的回滚内容实现数据回滚所需的类和方法。例如,针对上文的示例,第一执行内容可以包括:积分***调用失败情况下,实现对仓储***的通知单状态进行数据回滚所需的类和方法,以及仓储***调用失败情况下,实现对积分***的积分累加处理进行数据回滚所需的类和方法。
本步骤104中,响应于发生外部***的调用失败事件,具体可通过以下处理过程,实现对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚:
11)根据所述远程调用记录,确定调用失败的目标外部***。
12)根据所述目标回滚注解信息,确定对所述目标外部***调用失败情况下,所述目标业务处理方法对应所需的目标回滚内容。
13)从所述目标切面的所述第一执行内容中获取对所述目标回滚内容进行数据回滚所需的目标类和在所述目标类中所需的目标方法,基于所述目标类中的所述目标方法对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。
其中,在基于所述目标类中的所述目标方法对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚时,具体可从所述远程调用记录中提取执行所述目标方法所需的参数信息,并将所述目标方法所需的参数信息和所述目标方法的程序代码组装为对应的可执行代码,通过执行所述可执行代码,实现对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。
承接上文的示例,假设根据所述远程调用记录,确定出调用失败的目标外部***为仓储***,也就是说,针对订单处理请求所指示的(客户)已付款订单,订单***调用仓储***将通知单状态从等待状态(不可出库状态)调整为出库状态的操作失败,该情况下,可根据订单处理方法的目标回滚注解信息,确定出仓储***调用失败情况下,所需的目标回滚内容为积分累加方法及其涉及的累加数量参数。在此基础上,可进一步从订单处理方法对应的目标切面中获取对所述目标回滚内容进行回滚所需的目标类和在目标类中所需的目标方法,例如所需的积分扣除方法及其所属的类等,并可从远程调用记录中提取积分累加方法所涉及的累积数量值,将提取的累加数量值作为积分扣除方法中的积分扣除值与积分扣除方法及其所对应类的相关实现代码(计算机程序代码)封装为可执行代码,进而通过运行该可执行代码,实现对积分***执行匹配于所述调用失败事件的数据回滚,保持客户积分与仓储***的通知单状态(仓储***调用失败,从而该订单对应的通知单状态仍为等待状态,而非出库状态)之间的一致性。
综上所述,本申请通过对需执行回滚动作的目标业务处理方法添加回滚注解信息,基于回滚注解信息检测对外部***的远程调用事件并进行远程调用记录,如果出现外部***调用失败,利用切面如SpringAop切面并结合回滚注解信息和远程调用记录进行数据回滚,以此实现了分布式***之间的业务数据一致性。与已知技术的重量级组件相比,本申请提供的上述方法实施简单,开发者可以将其向业务***快速集成并实现,不需要增加第三方重量级组件即可实现数据一致性处理,从而本申请在解决了分布式***数据一致性问题的前提下,还具备实施简单、集成快捷,落地性高等技术效果。
以下提供本申请实现数据一致性的方法的一应用示例。
该示例提供了一个实现数据一致性的***,***主要包括以下三大模块:SpringAop执行方法拦截模块、本地线程副本记录执行方法模块、rpc调用回滚模块。
其中,在业务***的业务处理方法被调用前,基于回滚注解信息标记该方法是否需要进行数据回滚(如在外部***调用失败情况下需进行数据回滚),若需要回滚,在业务***内部进行远程调用时,可在相应远程调用的接口上标明当前方法实现所需回滚需采用的实现类及方法的名称(作为切面),在远程调用时,***中的SpringAop执行方法拦截模块对添加了回滚注解信息的方法进行拦截,本地线程副本记录执行方法模块自动将所拦截方法执行的远程调用内容进行记录,形成远程调用记录,当执行某个远程调用失败时,rpc调用回滚模块将已经执行成功的远程调用按对应的实现回滚的类和方法进行回滚。
其对应的一个实现数据一致性的例子如图2所示,具体包括以下处理流程:
1、业务***X获得用户的业务请求;
1.1、响应于该业务请求对应的目标业务处理方法需执行回滚操作,为目标业务处理方法增加回滚注解信息,并执行带有注解的目标业务处理方法;
1.1.1-1.1.3、业务***X对外部***A、B、C进行rpc(Remote Procedure Call,远程过程调用)远程调用;
1.1.4、监控各个rpc远程调用,记录并封装对应的远程调用记录;
1.2、响应于检测到存在对外部***的rpc远程调用失败,执行对应的rpc调用回滚,以使各个***的业务数据保持一致;
1.2.1-1.2.3、rpc调用回滚。
对应于上述的实现数据一致性的方法,本申请实施例还提供一种实现数据一致性的装置,其组成结构如图3所示,包括:
注解添加单元301,用于响应于业务***的目标业务处理方法需执行回滚动作,为所述目标业务处理方法添加目标回滚注解信息;所述目标回滚注解信息用于表征执行所述目标业务处理方法过程中,如果发生对外部***的调用失败事件,需进行数据回滚;
检测单元302,用于基于所述目标回滚注解信息,检测所述业务***通过所述目标业务处理方法处理业务请求过程中,所述业务***对多个外部***的远程调用事件;
记录单元303,用于对每个远程调用事件进行信息记录,得到远程调用记录;
回滚单元304,用于响应于发生对外部***的调用失败事件,根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,以使所述业务***以及所述多个外部***之间的业务数据一致;
其中,所述目标切面包括实现所述目标业务处理方法所需的数据回滚需执行的第一执行内容。
在一可选实施方式中,上述装置还包括存储处理单元;
检测单元302,具体用于:
通过对携带有回滚注解信息的方法进行拦截,拦截所述业务***执行的所述目标业务处理方法,并触发所述存储处理单元保存所述目标业务处理方法携带的所述目标回滚注解信息;
响应于拦截到所述目标业务处理方法,检测通过所述目标业务处理方法处理所述业务请求过程中,所述业务***对多个外部***的远程调用事件。
在一可选实施方式中,所述目标回滚注解信息包括:发生对相应外部***的调用失败事件情况下,所述目标业务处理方法对应所需的回滚内容;
所述存储处理单元在保存所述目标业务处理方法携带的所述目标回滚注解信息时,具体用于:至少将所述目标回滚注解信息中的所述回滚内容保存至本地线程对应的存储空间。
在一可选实施方式中,记录单元303,具体用于:
将每个远程调用事件涉及的第二执行内容记录并保存至本地线程副本对应的存储空间;所述第二执行内容包括远程调用事件所执行的类、方法、方法中使用的参数信息和是否调用成功的调用状态中的至少部分信息。
在一可选实施方式中,所述第一执行内容包括:发生对相应外部***的调用失败事件情况下,所述目标业务处理方法对应所需的回滚内容实现数据回滚所需的类和方法;
回滚单元304,具体用于:
根据所述远程调用记录,确定调用失败的目标外部***;
根据所述目标回滚注解信息,确定对所述目标外部***调用失败情况下,所述目标业务处理方法对应所需的目标回滚内容;
从所述目标切面的所述第一执行内容中获取对所述目标回滚内容进行数据回滚所需的目标类和在所述目标类中所需的目标方法,基于所述目标类中的所述目标方法对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。
在一可选实施方式中,回滚单元304,在基于所述目标类中的所述目标方法对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚时,具体用于:
从所述远程调用记录中提取执行所述目标方法所需的参数信息;
将所述目标方法所需的参数信息和所述目标方法的程序代码组装为对应的可执行代码,通过执行所述可执行代码,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。
在一可选实施方式中,所述目标切面为SpringAop切面。
对于本申请实施例提供的实现数据一致性的装置而言,由于其与上文方法实施例提供的实现数据一致性的方法相对应,所以描述的比较简单,相关相似之处请参见上文方法实施例的说明即可,此处不再详述。
本申请实施例还提供一种电子设备,电子设备的组成结构,如图4所示,至少包括:
存储器10,用于存放计算机指令集;
计算机指令集可以通过计算机程序的形式实现。
处理器20,用于通过执行计算机指令集,实现如上文任一方法实施例公开的实现数据一致性的方法。
处理器20可以为中央处理器(Central Processing Unit,CPU),特定应用集成电路(application-specific integrated circuit,ASIC),数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件等。
电子设备具备显示装置和/或具备显示接口、能外接显示装置。
可选的,电子设备还包括摄像头组件,和/或连接有外置摄像头组件。
除此之外,电子设备还可以包括通信接口、通信总线等组成部分。存储器、处理器和通信接口通过通信总线完成相互间的通信。
通信接口用于电子设备与其他设备之间的通信。通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,EISA)总线等,该通信总线可以分为地址总线、数据总线、控制总线等。
另外,本申请还提供一种计算机可读介质,其上存储有计算机指令集,该计算机指令集在被处理器执行时,用于实现如上文任一方法实施例公开的实现数据一致性的方法。
其中,计算机指令集可以为计算机程序形式,所述计算机程序包含用于执行如上文任一方法实施例提供的实现数据一致性的方法的程序代码。
在本申请的上下文中,计算机可读介质(机器可读介质)可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是电子设备中所包含的;也可以是单独存在,而未装配入电子设备中。
综上所述,本申请提供的实现数据一致性的方法、装置、设备和计算机可读介质,至少具备以下技术优势:
1、可集成性:业务***只需关注执行的业务目标是什么失败时回滚的目标是什么即可,本申请方法的处理逻辑对于业务***来说集成简单,对于业务***尤其是简单的业务***落地性强;
2、业务解耦:实施中,对于本申请,可以开发无需在业务代码中写一堆异常处理的实现逻辑,异常处理交给业务***以外的框架。
3、数据一致性:本申请在简单业务中较大程度的避免了数据不一致的风险。
需要说明,尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本申请的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中申请的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种实现数据一致性的方法,其特征在于,包括:
响应于业务***的目标业务处理方法需执行回滚动作,为所述目标业务处理方法添加目标回滚注解信息;所述目标回滚注解信息用于表征执行所述目标业务处理方法过程中,如果发生对外部***的调用失败事件,需进行数据回滚;
基于所述目标回滚注解信息,检测通过所述目标业务处理方法处理业务请求过程中,所述业务***对多个外部***的远程调用事件;
对每个远程调用事件进行信息记录,得到远程调用记录;
响应于发生对外部***的调用失败事件,根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,以使所述业务***以及所述多个外部***之间的业务数据一致;
其中,所述目标切面包括实现所述目标业务处理方法所需的数据回滚需执行的第一执行内容。
2.根据权利要求1所述的实现数据一致性的方法,其特征在于,所述基于所述目标回滚注解信息,检测所述业务***通过所述目标业务处理方法处理业务请求过程中,所述业务***对多个外部***的远程调用事件,包括:
通过对携带有回滚注解信息的方法进行拦截,拦截所述业务***执行的所述目标业务处理方法,并保存所述目标业务处理方法携带的所述目标回滚注解信息;
响应于拦截到所述目标业务处理方法,检测通过所述目标业务处理方法处理所述业务请求过程中,所述业务***对多个外部***的远程调用事件。
3.根据权利要求2所述的实现数据一致性的方法,其特征在于,所述目标回滚注解信息包括:发生对相应外部***的调用失败事件情况下,所述目标业务处理方法对应所需的回滚内容;
所述保存所述目标业务处理方法携带的所述目标回滚注解信息,包括:
至少将所述目标回滚注解信息中的所述回滚内容保存至本地线程对应的存储空间。
4.根据权利要求3所述的实现数据一致性的方法,其特征在于,所述对每个远程调用事件进行信息记录,包括:
将每个远程调用事件涉及的第二执行内容记录并保存至本地线程副本对应的存储空间;所述第二执行内容包括远程调用事件所执行的类、方法、方法中使用的参数信息和是否调用成功的调用状态中的至少部分信息。
5.根据权利要求4所述的实现数据一致性的方法,其特征在于,所述第一执行内容包括:发生对相应外部***的调用失败事件情况下,所述目标业务处理方法对应所需的回滚内容实现数据回滚所需的类和方法;
所述根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,包括:
根据所述远程调用记录,确定调用失败的目标外部***;
根据所述目标回滚注解信息,确定对所述目标外部***调用失败情况下,所述目标业务处理方法对应所需的目标回滚内容;
从所述目标切面的所述第一执行内容中获取对所述目标回滚内容进行数据回滚所需的目标类和在所述目标类中所需的目标方法,基于所述目标类中的所述目标方法对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。
6.根据权利要求5所述的实现数据一致性的方法,其特征在于,所述基于所述目标类中的所述目标方法对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,包括:
从所述远程调用记录中提取执行所述目标方法所需的参数信息;
将所述目标方法所需的参数信息和所述目标方法的程序代码组装为对应的可执行代码,通过执行所述可执行代码,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚。
7.根据权利要求1所述的实现数据一致性的方法,其特征在于,所述目标切面为SpringAop切面。
8.一种实现数据一致性的装置,其特征在于,包括:
注解添加单元,用于响应于业务***的目标业务处理方法需执行回滚动作,为所述目标业务处理方法添加目标回滚注解信息;所述目标回滚注解信息用于表征执行所述目标业务处理方法过程中,如果发生对外部***的调用失败事件,需进行数据回滚;
检测单元,用于基于所述目标回滚注解信息,检测所述业务***通过所述目标业务处理方法处理业务请求过程中,所述业务***对多个外部***的远程调用事件;
记录单元,用于对每个远程调用事件进行信息记录,得到远程调用记录;
回滚单元,用于响应于发生对外部***的调用失败事件,根据所述目标回滚注解信息、所述远程调用记录和所述目标业务处理方法对应的目标切面,对所述多个外部***中的相应***执行匹配于所述调用失败事件的数据回滚,以使所述业务***以及所述多个外部***之间的业务数据一致;
其中,所述目标切面包括实现所述目标业务处理方法所需的数据回滚需执行的第一执行内容。
9.一种电子设备,其特征在于,包括:
存储器,用于至少存储一组计算机指令集;
处理器,用于通过执行所述存储器中存储的所述指令集,实现如权利要求1-7任一项所述的实现数据一致性的方法。
10.一种计算机可读介质,其特征在于,其上存储有计算机指令集,所述计算机指令集在被处理器执行时,用于实现如权利要求1-7任一项所述的实现数据一致性的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410167993.5A CN117992546A (zh) | 2024-02-06 | 2024-02-06 | 实现数据一致性的方法、装置、设备和计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410167993.5A CN117992546A (zh) | 2024-02-06 | 2024-02-06 | 实现数据一致性的方法、装置、设备和计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117992546A true CN117992546A (zh) | 2024-05-07 |
Family
ID=90897353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410167993.5A Pending CN117992546A (zh) | 2024-02-06 | 2024-02-06 | 实现数据一致性的方法、装置、设备和计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992546A (zh) |
-
2024
- 2024-02-06 CN CN202410167993.5A patent/CN117992546A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107992398B (zh) | 一种业务***的监控方法和监控*** | |
CN109040316B (zh) | Http服务处理方法和装置 | |
CN111585867B (zh) | 消息处理方法、装置、电子设备及可读存储介质 | |
US8825798B1 (en) | Business event tracking system | |
CN105187674B (zh) | 服务录音的合规检查方法及装置 | |
CN101770669A (zh) | 银行自动报警***及方法 | |
CN112288577B (zh) | 分布式服务的交易处理方法、装置、电子设备和介质 | |
EP3289464A1 (en) | Detection of node.js memory leaks | |
CN111475372A (zh) | 微服务的服务实例监控方法、装置、设备及存储介质 | |
CN114760233B (zh) | 业务处理方法、装置、电子设备及存储介质 | |
CN111240940A (zh) | 实时业务监控方法、装置、电子设备、存储介质 | |
CN111782431A (zh) | 一种异常的处理方法、装置、终端及存储介质 | |
CN106612263B (zh) | 一种用于处理应用访问请求的方法与设备 | |
CN112364109B (zh) | 事件的业务关联方法、***、装置、电子设备及存储介质 | |
CN116319810A (zh) | 分布式***的流量控制方法、装置、设备、介质及产品 | |
CN117992546A (zh) | 实现数据一致性的方法、装置、设备和计算机可读介质 | |
CN113779021B (zh) | 数据处理方法、装置、计算机***及可读存储介质 | |
CN115249190A (zh) | 一种异步入账动态预警方法和***、电子设备、存储介质 | |
CN114390104A (zh) | 过程取证***、方法、装置、计算机设备及介质 | |
CN111371586B (zh) | 日志数据传输方法、装置和设备 | |
CN114090293A (zh) | 一种服务提供方法及电子设备 | |
CN111542048A (zh) | 侦码设备采集功能重启方法、装置、服务器及存储介质 | |
CN113778726A (zh) | 一种错误信息处理方法、装置、服务器和存储介质 | |
CN110138634A (zh) | 一种重点数据的监控方法及终端 | |
CN116225714A (zh) | 信息处理方法、装置、设备及存储介质 |
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 |