CN113986686A - 一种基于分布式的事务异常检测方法、装置和系统 - Google Patents
一种基于分布式的事务异常检测方法、装置和系统 Download PDFInfo
- Publication number
- CN113986686A CN113986686A CN202111332871.XA CN202111332871A CN113986686A CN 113986686 A CN113986686 A CN 113986686A CN 202111332871 A CN202111332871 A CN 202111332871A CN 113986686 A CN113986686 A CN 113986686A
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- rollback
- transaction node
- local
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- 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/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种基于分布式的事务异常检测方法、装置和系统,可用于人工智能技术领域,所述方法包括:执行上游事务节点发送的业务交易任务之前,查询本地主事务表;根据本地主事务表中的回滚情况,进行事务异常检测,能够防止TCC模式下的事务悬挂,保证业务数据的一致性。
Description
技术领域
本发明涉及计算机技术领域,特别涉及人工智能技术领域,尤其涉及一种基于分布式的事务异常检测方法、装置和系统。
背景技术
检测-确认-取消(Try-Confirm-Cancel,简称:TCC)模式是分布式事务中常见的解决方式,其原理是将整个分布式事务分为两个阶段,第一阶段为Try操作,第二个阶段为Confirm操作或Cancel操作。但在TCC模式下,若任何一个子事务仅进行了一阶段的操作,没有进行任何二阶段的处理,会导致事务悬挂,造成业务数据不一致的问题。目前相关技术中还没有能解决悬挂问题的方法。
发明内容
本发明的一个目的在于提供一种基于分布式的事务异常检测方法,能够防止TCC模式下的事务悬挂,保证业务数据的一致性。本发明的另一个目的在于提供一种基于分布式的事务异常检测装置。本发明的再一个目的在于提供一种基于分布式的事务异常检测系统。本发明的还一个目的在于提供一种计算机可读介质。本发明的还一个目的在于提供一种计算机设备。
为了达到以上目的,本发明一方面公开了一种基于分布式的事务异常检测方法,包括:
执行上游事务节点发送的业务交易任务之前,查询本地主事务表;
根据本地主事务表中的回滚情况,进行事务异常检测。
优选的,根据本地主事务表中的回滚情况,进行事务异常检测,包括:
若本地主事务表中存在回滚记录,生成事务异常信号。
优选的,还包括:
若本地主事务表中不存在回滚记录,在本地子事务表中添加交易记录,交易记录与业务交易信息对应;
查询本地主事务表;
若本地主事务表中不存在回滚记录,执行业务交易任务;
若本地主事务表中存在回滚记录,生成事务异常信号。
优选的,在执行业务交易任务之后,还包括:
判断是否存在下游事务节点;
若存在,将业务交易任务发送至下游事务节点,以供下游事务节点重复执行查询本地主事务表的步骤。
优选的,方法还包括:
响应于上游事务节点发送的回滚请求,在本地主事务表中添加回滚记录;
判断是否存在下游事务节点;
若存在,将回滚请求发送至下游事务节点,以供下游事务节点重复执行在本地主事务表中添加回滚记录的步骤;
若不存在,执行回滚业务。
优选的,在执行回滚业务之后,还包括:
判断是否存在上游事务节点;
若存在,向上游事务节点发送回滚指示,以供上游事务节点执行回滚业务。
优选的,上游事务节点包括唯一标识码;
在本地主事务表中添加回滚记录,包括:
对唯一标识码添加忽略关键字;
根据添加了忽略关键字的唯一标识码和回滚请求,生成回滚记录,并将回滚记录添加至本地主事务表。
本发明还公开了一种基于分布式的事务异常检测系统,包括:多个事务节点,多个事务节点包括上游事务节点和当前事务节点;
上游事务节点用于向当前事务节点发送业务交易任务;
当前事务节点用于在执行业务交易任务之前,查询本地主事务表,并根据本地主事务表中的回滚情况,进行事务异常检测。
优选的,多个事务节点还包括下游事务节点;
上游事务节点还用于向当前事务节点发送回滚请求;
当前事务节点还用于响应于回滚请求,在本地主事务表中添加回滚记录;判断是否存在下游事务节点;若存在,将回滚请求发送至下游事务节点,以供下游事务节点重复执行在本地主事务表中添加回滚记录的步骤;若不存在,执行回滚业务。
本发明还公开了一种基于分布式的事务异常检测装置,包括:
第一查询单元,用于响应于上游事务发送的业务交易信息,查询本地主事务表;
检测单元,用于根据本地主事务表中回滚记录的存在情况,进行事务异常检测。
本发明还公开了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法。
本发明还公开了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述处理器执行所述程序时实现如上所述方法。
本发明执行上游事务节点发送的业务交易任务之前,查询本地主事务表;根据本地主事务表中的回滚情况,进行事务异常检测,能够防止TCC模式下的事务悬挂,保证业务数据的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于分布式的事务异常检测系统的结构示意图;
图2为本发明实施例提供的一种基于分布式的事务异常检测方法的流程图;
图3为本发明实施例提供的又一种基于分布式的事务异常检测方法的流程图;
图4为本发明实施例提供的一种基于分布式的事务异常检测装置的结构示意图;
图5为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本申请公开的一种基于分布式的事务异常检测方法、装置和系统可用于人工智能技术领域,也可用于除人工智能技术领域之外的任意领域,本申请公开的一种基于分布式的事务异常检测方法、装置和系统的应用领域不做限定。
为了便于理解本申请提供的技术方案,下面先对本申请技术方案的相关内容进行说明。检测-确认-取消(Try-Confirm-Cancel,简称:TCC)模式是分布式事务中常见的解决方式,其原理是将整个分布式事务分为两个阶段,第一阶段为Try操作,第二个阶段为Confirm操作或Cancel操作。其中,Try操作的作用是完成对所有业务的检测,预留业务所必须的业务资源,以保证第一阶段完成后执行的第二阶段的操作能够成功;当第一阶段的Try操作执行成功,第二阶段执行Confirm操作,以执行业务交易任务中的业务逻辑;当第一阶段的Try操作执行失败,第二阶段执行Cancel操作,释放第一阶段的Try操作所预留的资源。
在同库模式中,业务数据存储在业务应用侧,由发起方应用负责事务协调,数据高可用跟随应用部署;在异库模式中,业务数据集中存储在服务端,由事务平台负责高可用和事务协调。同库模式下业务数据存储在业务应用侧,其优点是可以减少与分布式事务平台的交互,减少对平台的依赖。在TCC模式下,每个事务节点在其本地均设置有事务数据表,事务数据表包括主事务表(dtx_tcc_main_x)和子事务表(dtx_tcc_sub_x)。当主事务节点向下游的子事务节点发起业务交易任务时,会在主事务节点的本地主事务表里插入一条主事务记录,后续下游的子事务节点每次向其下游的事务节点发起一笔业务交易任务都会在发起方一侧的子事务表里插入一条子事务记录。例如:A为主事务节点,B、C和D均为子事务节点。主事务节点A调用子事务节点B,子事务节点B调用子事务节点C和D。具体地,主事务节点A发起业务交易任务,在本地主事务表中插入一条业务交易记录,当主事务节点A调用子事务节点B时,先在本地子事务表中插入一条业务交易记录,然后将业务交易任务发送至子事务节点B,以调用子事务节点B的服务;子事务节点B接收到业务交易任务,需要依次调用子事务节点C和D,先在本地子事务表中插入一条调用子事务节点C的业务交易记录,然后将业务交易任务发送至子事务节点C,以调用子事务节点C的服务;再在本地子事务表中插入一条调用子事务节点D的业务交易记录,然后将业务交易任务发送至子事务节点D,以调用子事务节点D的服务。以第二阶段执行Confirm操作为例,主事务节点A发起Confirm操作,从本地子事务表中查询出调用子事务节点B的记录,然后将Confirm操作发送至子事务节点B;子事务节点B收到Confirm操作,从本地子事务表中查询出子事务节点C,然后将Confirm操作发送至子事务节点C,再从本地子事务表中查询出子事务节点D,然后将Confirm操作发送至子事务节点D;子事务节点C和子事务节点D执行Confirm操作,执行完毕后向子事务节点B发送完成消息;子事务节点B收到子事务节点C和子事务节点D的完成消息后,执行Confirm操作,执行完毕后向主事务节点A发送完成消息;主事务节点A收到子事务节点B的完成消息后,执行Confirm操作。若第二阶段执行Cancel操作,与上述执行Confirm操作的流程相同,在此不再赘述。
在第一阶段中,当子事务节点B调用子事务节点C的服务,由于如网络故障等原因导致调用时间过长,进而导致主事务节点A等待时间过长,因此主事务节点A主动发起第二阶段的Cancel操作;当子事务节点B接收到Cancel操作,从本地子事务表中仅能查询出调用子事务节点C的记录,还没有调用子事务节点D的记录,因此子事务节点B将Cancel操作仅发送至子事务节点C,而不会发送至子事务节点D,因此只有子事务节点C执行Cancel操作;若在主事务节点A主动发起第二阶段的Cancel操作时网络恢复,此时子事务节点B会继续调用子事务节点D的服务,子事务节点D的服务被调用后,由于子事务节点B后续接收到了主事务节点A发起的Cancel操作,因此子事务节点D后续不会进行第二阶段的Cancel操作或Confirm操作,造成子事务节点D悬挂。后续若需要查询业务数据,由于子事务节点D被悬挂,会导致业务数据不一致的问题。在异库模式下,主事务节点和子事务节点的状态均在分布式事务平台统一管理,在每一笔子事务节点发起业务交易前,分布式事务平台可以通过查询其本地主事务节点的状态判断这笔交易能否发起。但在同库模式下,主事务节点的状态仅在本地维护,下游的子事务节点发起第一阶段的业务交易时无法得知主事务状态,无法避免悬挂问题的发生。
为解决上述技术问题,图1为本发明实施例提供的一种基于分布式的事务异常检测系统的结构示意图,该系统包括多个事务节点,图1以4个事务节点为例,A为上游事务节点,B为当前事务节点、C和D均为下游事务节点。上游事务节点A为主事务节点,调用当前事务节点B,当前事务节点B调用下游事务节点C和D。
多个事务节点包括上游事务节点和当前事务节点。其中,上游事务节点调用当前事务节点,当前事务节点为上有事务节点的下游事务节点。如图1所示,A为主事务节点,且主事务节点A为当前事务节点B的上游事务节点,当前事务节点B为主事务节点A的下游事务节点,也称为当前事务节点A的子事务节点。当前事务节点B为下游事务节点C和D的上游事务节点,下游事务节点C和D也称为当前事务节点B的子事务节点。
上游事务节点用于向当前事务节点发送业务交易任务。如图1所示,具体地,上游事务节点A用于向当前事务节点B发送业务交易任务。
当前事务节点用于在执行业务交易任务之前,查询本地主事务表,并根据本地主事务表中的回滚情况,进行事务异常检测。
本发明实施例中,上游事务节点还用于向当前事务节点发送回滚请求。如图1所示,具体地,上游事务节点A用于向当前事务节点B发送回滚请求。
当前事务节点还用于响应于回滚请求,在本地主事务表中添加回滚记录;判断是否存在下游事务节点;若存在,将回滚请求发送至下游事务节点,以供下游事务节点重复执行在本地主事务表中添加回滚记录的步骤;若不存在,执行回滚业务。如图1所示,具体地,当前事务节点B接收到上游事务节点A发送的回滚请求后,在本地主事务表中添加回滚记录,当前事务节点B还存在下游事务节点C和D,将回滚请求发送至下游事务节点C和D,以供下游事务节点C和D在其本地主事务表中添加回滚记录。
本发明实施例提供的技术方案中,执行上游事务节点发送的业务交易任务之前,查询本地主事务表;根据本地主事务表中的回滚情况,进行事务异常检测,能够防止TCC模式下的事务悬挂,保证业务数据的一致性。
值得说明的是,图1所示的基于分布式的事务异常检测系统还适用于图2或图3的基于分布式的事务异常检测方法,在此不再赘述。
下面以基于分布式的事务异常检测装置作为执行主体为例,说明本发明实施例提供的基于分布式的事务异常检测方法的实现过程。可理解的是,本发明实施例提供的基于分布式的事务异常检测方法的执行主体包括但不限于基于分布式的事务异常检测装置。
图2为本发明实施例提供的一种基于分布式的事务异常检测方法的流程图,如图2所示,该方法包括:
步骤101、执行上游事务节点发送的业务交易任务之前,查询本地主事务表。
步骤102、根据本地主事务表中的回滚情况,进行事务异常检测。
本发明实施例提供的技术方案中,执行上游事务节点发送的业务交易任务之前,查询本地主事务表;根据本地主事务表中的回滚情况,进行事务异常检测,能够防止TCC模式下的事务悬挂,保证业务数据的一致性。
图3为本发明实施例提供的又一种基于分布式的事务异常检测方法的流程图,如图3所示,该方法包括:
步骤201、接收上游事务节点发送的业务交易任务。
本发明实施例中,各步骤由事务节点执行。
本发明实施例中,上游事务节点可以是主事务节点,也可以是子事务节点。业务交易任务为TCC模式下第一阶段的Try操作,完成对业务交易的检测,预留业务所必须的业务资源,以保证第一阶段完成后执行的第二阶段的操作能够成功。
步骤202、查询本地主事务表,判断本地主事务表中是否存在回滚记录,若是,执行步骤203;若否,执行步骤204。
本发明实施例中,本地主事务表为事务节点的本地主事务表,本地主事务表的初始状态为空,仅用于记录主事务节点的回滚情况。若本地主事务表中存在回滚记录,表明主事务节点发起了回滚请求,当前业务交易发生异常,执行步骤203;若本地主事务表中不存在回滚记录,表明主事务节点没有发起回滚请求,当前业务交易正常,继续执行步骤204。
步骤203、生成事务异常信号,流程结束。
本发明实施例中,若当前业务交易发生异常,为防止悬挂事件发生,生成事务异常信号,终止当前业务交易,流程结束。
本发明实施例中,在子事务节点发起业务交易时,能够及时对主事务节点的状态进行判断,进而确定出当前业务交易是否发生异常,若发生异常,通过事务异常信号直接结束当前业务交易,能够及时避免悬挂事件发生,进而保证了业务数据的一致性。
步骤204、在本地子事务表中添加交易记录,交易记录与业务交易任务对应。
本发明实施例中,若当前业务交易正常,表明当前事务节点可以发起业务交易,在本地子事务表中添加交易记录,交易记录包括但不限于业务数据,交易记录于业务交易任务对应。
步骤205、查询本地主事务表,判断本地主事务表中是否存在回滚记录,若是,执行步骤203;若否,执行步骤206。
本发明实施例中,事务节点再次查询本地主事务表,若本地主事务表中存在回滚记录,表明在事务节点在本地子事务表中添加交易记录时主事务节点发起了回滚请求,当前业务交易发生异常,继续执行步骤203;若本地主事务表中不存在回滚记录,表明当前业务交易正常,继续执行步骤206。
本发明实施例中,事务节点在第一阶段发送业务交易任务之前,需要查询本地主事务表是否存在回滚记录,以确定当前业务交易是否发生异常;若无异常,再在本地子事务表中添加交易记录,查询本地主事务表是否存在回滚记录和添加交易记录应是串行执行的,若在并发执行下,在添加交易记录的时候若主事务节点发起回滚请求,仍有可能导致悬挂事件发生。因此,本发明采用后置查询的方式,即:先对本地主事务表进行一次查询,在没有回滚记录的情况下,在本地子事务表中添加交易记录;添加交易记录后,对本地主事务表进行二次查询,以确定出在添加交易记录时,当前业务交易是否发生异常,更加精确的防止了在业务交易过程中发生悬挂的问题。
步骤206、执行业务交易任务。
本发明实施例中,事务节点可以执行业务交易任务,以完成对业务交易的检测,预留业务所必须的业务资源,以保证第一阶段完成后执行的第二阶段的操作能够成功。
步骤207、判断业务交易任务是否正常执行,若否,执行步骤208;若是,执行步骤209。
本发明实施例中,若执行业务交易任务的过程中发生交易异常,表明第一阶段失败,继续执行步骤208;若执行业务交易任务的过程中未发生交易异常,即:交易正常,表明第一阶段成功,继续执行步骤209。事务节点可以执行业务交易任务,以完成对业务交易的检测,预留业务所必须的业务资源,以保证第一阶段完成后执行的第二阶段的操作能够成功。
步骤208、生成事务回滚信号,并向上游事务节点发送事务回滚信号,继续执行步骤212。
本发明实施例中,若第一阶段失败,当前的事务节点生成事务回滚信号,并向上游事务节点发送事务回滚信号,以供上游事务节点将事务回滚信号向上传递至主节点,继续执行步骤212。
步骤209、判断是否存在下游事务节点,若是,执行步骤210;若否,执行步骤211。
本发明实施例中,下游事务节点为当前的事务节点所调用的子事务节点,若判断出存在下游事务节点,表明需要将业务交易任务继续向下传递,继续执行步骤210;若不存在下游事务节点,表明当前的事务节点没有调用其他节点,不需要将业务交易任务继续向下传递,若在执行业务交易任务的过程中未超时,进入第二阶段,接收上游事务节点发送的确认(Confirm)请求;若在执行业务交易任务中超时,进入第二阶段,主事务节点主动发起回滚(Cancel)请求并向下游事务节点传递,执行步骤211。
作为一种可选方案,若上游事务节点未发送回滚请求,则流程结束。
步骤210、将业务交易任务发送至下游事务节点,以供下游事务节点重复执行步骤202。
本发明实施例中,事务节点将业务交易任务发送至其调用的下游事务节点,下游事务节点重复执行步骤202,即:执行业务交易任务之前,查询本地主事务表,判断本地主事务表中是否存在回滚记录,直至没有调用的下游事务节点。
步骤211、接收上游事务节点发送的确认(Confirm)请求,并执行确认操作,流程结束。
具体地,主事务节点向下游事务节点发送确认请求,将确认请求依次向下传递到每个子事务节点,直到当前的事务节点不存在下游事务节点;当前的事务节点执行确认操作,并判断是否存在上游事务节点,若是,向上游事务节点发送确认指示,以供上游事务节点执行确认操作并重复执行判断是否存在上游事务节点的步骤;若否,流程结束。
步骤212、接收上游事务节点发送的回滚(Cancel)请求。
本发明实施例中,主事务节点向其调用的下游的子事务节点发送回滚请求,以将回滚请求向调用的各个子事务节点进行传递,以使每一个子事务节点均能接收到主事务节点发送的回滚请求。上游事务节点可以是主事务节点,也可以是子事务节点。
本发明实施例中,回滚请求包括事务上下文信息,根据事务上下文信息可以确定出上游事务节点调用的服务。进一步地,若上游事务节点调用的服务为当前的事务节点提供的服务,继续执行步骤213。
步骤213、响应于上游事务节点发送的回滚请求,在本地主事务表中添加回滚记录。
本发明实施例中,在接收到上游事务节点发送的回滚请求后,在本地主事务表中添加回滚记录,为后续在执行业务交易任务之前确保当前业务交易未发生异常而提供判断依据。其中,上游事务节点包括唯一标识码,可以唯一标识一个上游事务节点,作为后续用于在数据库中添加和查询的主键。
具体地,对唯一标识码添加忽略关键字;根据添加了忽略关键字(Ignore)的唯一标识码和回滚请求,生成回滚记录,并将回滚记录添加至本地主事务表。
本发明实施例中,通过对添加回滚记录进行幂等控制,防止同一个服务在同一个事务节点中可能多次被调用所带来的主键冲突问题。
步骤214、判断是否存在下游事务节点,若是,执行步骤215;若否,执行步骤216。
本发明实施例中,下游事务节点为当前的事务节点所调用的子事务节点,若存在下游事务节点,表明需要将回滚请求继续向下传递,继续执行步骤215;若不存在下游事务节点,表明当前的事务节点没有调用其他节点,不需要将回滚请求继续向下传递,执行步骤216。
步骤215、将回滚请求发送至下游事务节点,以供下游事务节点重复执行步骤213。
本发明实施例中,事务节点将回滚请求发送至其调用的下游事务节点,以供下游事务节点在本地主事务表中添加回滚记录。
步骤216、执行回滚业务。
本发明实施例中,若当前的事务节点没有所调用的子事务节点,执行回滚业务,即:从最底层的事务节点开始执行回滚业务。
步骤217、判断是否存在上游事务节点,若是,执行步骤218;若否,流程结束。
本发明实施例中,若存在上游事务节点,表明当前的事务节点不是主事务节点,执行步骤218;若不存在上游事务节点,表明当前的事务节点是主事务节点,流程结束。
步骤218、向上游事务节点发送回滚指示,以供上游事务节点重复执行步骤216。
本发明实施例中,若当前的事务节点不是主事务节点,向上游事务节点发送回滚指示,以供上游事务节点执行回滚业务,直至主事务节点完成执行回滚业务。
本发明实施例中,在分布式架构下,提出一种子事务节点侧非全量主事务状态同步的思想,通过服务提供者过滤器(Filter)传递主事务节点的回滚请求并记录到本地主事务表中,并采用后置查询的方式解决查询本地主事务表和插入子事务记录非原子操作可能带来的并发问题,能够有效预防分布式架构下事务发生悬挂的问题。
本发明实施例提供的基于分布式的事务异常检测方法的技术方案中,执行上游事务节点发送的业务交易任务之前,查询本地主事务表;根据本地主事务表中的回滚情况,进行事务异常检测,能够防止TCC模式下的事务悬挂,保证业务数据的一致性。
图4为本发明实施例提供的一种基于分布式的事务异常检测装置的结构示意图,该装置用于执行上述基于分布式的事务异常检测方法,如图4所示,该装置包括:第一查询单元11和检测单元12。
第一查询单元11用于响应于上游事务发送的业务交易信息,查询本地主事务表。
检测单元12用于根据本地主事务表中回滚记录的存在情况,进行事务异常检测。
本发明实施例中,检测单元12具体用于若本地主事务表中存在回滚记录,生成事务异常信号。
本发明实施例中,该装置还包括:第一添加单元13、第二查询单元14、第一执行单元15和第一生成单元16。
第一添加单元13用于若本地主事务表中不存在回滚记录,在本地子事务表中添加交易记录,交易记录与业务交易信息对应。
第二查询单元14用于查询本地主事务表。
第一执行单元15用于若本地主事务表中不存在回滚记录,执行业务交易任务。
第一生成单元16用于若本地主事务表中存在回滚记录,生成事务异常信号。
本发明实施例中,第一判断单元17和发送单元18。
第一判断单元17用于判断是否存在下游事务节点。
若存在,发送单元18用于将业务交易任务发送至下游事务节点,以供下游事务节点重复执行查询本地主事务表的步骤。
本发明实施例中,该装置还包括:第二添加单元19、第二判断单元20和第二执行单元21。
第二添加单元19用于响应于上游事务节点发送的回滚请求,在本地主事务表中添加回滚记录。
第二判断单元20用于判断是否存在下游事务节点。
若存在,发送单元18用于将回滚请求发送至下游事务节点,以供下游事务节点重复执行在本地主事务表中添加回滚记录的步骤。
若不存在,第二执行单元21用于执行回滚业务。
本发明实施例中,该装置还包括:第三判断单元22。
第三判断单元22用于判断是否存在上游事务节点。
若存在,发送单元18用于向上游事务节点发送回滚指示,以供上游事务节点执行回滚业务。
本发明实施例中,第二添加单元19具体用于对唯一标识码添加忽略关键字;根据添加了忽略关键字的唯一标识码和回滚请求,生成回滚记录,并将回滚记录添加至本地主事务表。
本发明实施例的方案中,执行上游事务节点发送的业务交易任务之前,查询本地主事务表;根据本地主事务表中的回滚情况,进行事务异常检测,能够防止TCC模式下的事务悬挂,保证业务数据的一致性。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
本发明实施例提供了一种计算机设备,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实现上述基于分布式的事务异常检测方法的实施例的各步骤,具体描述可参见上述基于分布式的事务异常检测方法的实施例。
下面参考图5,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。
如图5所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有计算机设备600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种基于分布式的事务异常检测方法,其特征在于,所述方法包括:
执行上游事务节点发送的业务交易任务之前,查询本地主事务表;
根据所述本地主事务表中的回滚情况,进行事务异常检测。
2.根据权利要求1所述的基于分布式的事务异常检测方法,其特征在于,所述根据所述本地主事务表中的回滚情况,进行事务异常检测,包括:
若所述本地主事务表中存在回滚记录,生成事务异常信号。
3.根据权利要求2所述的基于分布式的事务异常检测方法,其特征在于,还包括:
若所述本地主事务表中不存在回滚记录,在本地子事务表中添加交易记录,所述交易记录与所述业务交易任务对应;
查询所述本地主事务表;
若所述本地主事务表中不存在回滚记录,执行所述业务交易任务;
若所述本地主事务表中存在回滚记录,生成事务异常信号。
4.根据权利要求3所述的基于分布式的事务异常检测方法,其特征在于,在所述执行所述业务交易任务之后,还包括:
判断是否存在下游事务节点;
若存在,将所述业务交易任务发送至所述下游事务节点,以供所述下游事务节点重复执行所述查询本地主事务表的步骤。
5.根据权利要求1所述的基于分布式的事务异常检测方法,其特征在于,所述方法还包括:
响应于所述上游事务节点发送的回滚请求,在所述本地主事务表中添加回滚记录;
判断是否存在下游事务节点;
若存在,将所述回滚请求发送至所述下游事务节点,以供所述下游事务节点重复执行所述在所述本地主事务表中添加回滚记录的步骤;
若不存在,执行回滚业务。
6.根据权利要求5所述的基于分布式的事务异常检测方法,其特征在于,在所述执行回滚业务之后,还包括:
判断是否存在上游事务节点;
若存在,向所述上游事务节点发送回滚指示,以供所述上游事务节点执行回滚业务。
7.根据权利要求5所述的基于分布式的事务异常检测方法,其特征在于,所述上游事务节点包括唯一标识码;
所述在所述本地主事务表中添加回滚记录,包括:
对所述唯一标识码添加忽略关键字;
根据添加了忽略关键字的唯一标识码和所述回滚请求,生成回滚记录,并将所述回滚记录添加至所述本地主事务表。
8.一种基于分布式的事务异常检测系统,其特征在于,所述系统包括:多个事务节点,所述多个事务节点包括上游事务节点和当前事务节点;
所述上游事务节点用于向所述当前事务节点发送业务交易任务;
所述当前事务节点用于在执行所述业务交易任务之前,查询本地主事务表,并根据所述本地主事务表中的回滚情况,进行事务异常检测。
9.根据权利要求8所述的基于分布式的事务异常检测系统,其特征在于,所述多个事务节点还包括下游事务节点;
所述上游事务节点还用于向所述当前事务节点发送回滚请求;
所述当前事务节点还用于响应于所述回滚请求,在所述本地主事务表中添加回滚记录;判断是否存在下游事务节点;若存在,将所述回滚请求发送至所述下游事务节点,以供所述下游事务节点重复执行所述在所述本地主事务表中添加回滚记录的步骤;若不存在,执行回滚业务。
10.一种基于分布式的事务异常检测装置,其特征在于,所述装置包括:
第一查询单元,用于执行上游事务节点发送的业务交易任务之前,查询本地主事务表;
检测单元,用于根据所述本地主事务表中的回滚情况,进行事务异常检测。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7任一项所述的基于分布式的事务异常检测方法。
12.一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,其特征在于,所述程序指令被处理器加载并执行时实现权利要求1至7任意一项所述的基于分布式的事务异常检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111332871.XA CN113986686A (zh) | 2021-11-11 | 2021-11-11 | 一种基于分布式的事务异常检测方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111332871.XA CN113986686A (zh) | 2021-11-11 | 2021-11-11 | 一种基于分布式的事务异常检测方法、装置和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113986686A true CN113986686A (zh) | 2022-01-28 |
Family
ID=79747907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111332871.XA Pending CN113986686A (zh) | 2021-11-11 | 2021-11-11 | 一种基于分布式的事务异常检测方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986686A (zh) |
-
2021
- 2021-11-11 CN CN202111332871.XA patent/CN113986686A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111290866B (zh) | 业务处理方法及装置 | |
CN106844014B (zh) | 分布式事务防悬挂的实现方法和装置 | |
KR102077898B1 (ko) | 데이터베이스 고장 시의 데이터 저장 | |
WO2020108325A1 (zh) | 事务处理方法、装置和设备 | |
US9055065B2 (en) | Managing participant order in distributed transactions | |
CN110708196B (zh) | 数据处理方法及装置 | |
CN111314479A (zh) | 一种数据处理方法和设备 | |
CN110888893A (zh) | 一种基于微服务电商系统的订单处理方法 | |
CN112817995B (zh) | 数据处理方法和装置、电子设备及存储介质 | |
CN106921712B (zh) | 一种业务处理方法及装置 | |
CN109241186A (zh) | 分布式事务的管理方法、系统、计算机设备及存储介质 | |
TWI686703B (zh) | 資料儲存與業務處理的方法及裝置 | |
CN111737353A (zh) | 一种元数据同步方法及装置 | |
CN114358921A (zh) | 系统切换方法、装置、设备、介质和程序产品 | |
CN112346872A (zh) | 基于服务调用链路的云计算扩容方法及装置 | |
CN113377875A (zh) | 跨链数据处理方法、装置、电子设备及可读存储介质 | |
CN109995585B (zh) | 一种异常处理方法、设备和存储介质 | |
CN112099921B (zh) | 基于JVM的Java应用系统预热方法及系统 | |
CN111405061A (zh) | 一种基于Dubbo框架的微服务停机方法及服务器 | |
CN117435569A (zh) | 缓存系统动态扩容方法、装置、设备、介质和程序产品 | |
CN113986686A (zh) | 一种基于分布式的事务异常检测方法、装置和系统 | |
CN111159298A (zh) | 业务请求处理方法、装置、电子设备及存储介质 | |
CN114968982A (zh) | 分库分表场景业务处理方法及装置 | |
CN115221552A (zh) | 跨链安全保障方法、计算机设备和存储介质 | |
CN115080449A (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 |