本发明涉及事务管理领域,具体涉及一种事务回退系统及方法。
背景技术:
1、在计算机中,事务是指一系列的操作或任务,这些操作或任务被视为一个整体,要么全部执行成功,要么全部不执行。事务通常用于处理与业务相关的操作,以确保数据的一致性和完整性。
2、事务回退指的是在事务已经提交并持久化到数据库后,由于特定原因需要对该事务所有操作进行回退。目前的做法是为每一个需要事务回退的功能开发一个对应的逆向功能,例如对新增订单的逆向操作为删除订单。为了确保事务回退的正确性,逆向操作必须严格按照正向操作的逆操作来实现。
3、然而,在事务存在多种分支执行的情况下,逆向的回退功能对开发人员要求比较高。每个功能都需要开发一个对应的回退功能,这导致开发工作量成倍增加。
技术实现思路
1、针对现有技术中存在的上述问题,现提供一种事务回退系统及方法。
2、具体技术方案如下:一种事务回退系统,其中,所述事务回退系统包括:
3、上下文管理单元,所述上下文管理单元用于根据需要执行的事务生成上下文管理信息;
4、撤销日志捕获单元,所述撤销日志捕获单元连接所述上下文管理单元,用于根据正向执行所述事务时各个事务节点的操作信息分别生成对应于所述事务节点的撤销日志,单个所述事务的所有所述撤销日志与所述上下文管理信息关联保存;
5、事务回退单元,所述事务回退单元分别连接所述上下文管理单元及所述撤销日志捕获单元,用于根据所述上下文管理信息及对应的所述撤销日志对已经执行完毕的所述事务进行回退处理。
6、优选的,单个所述事务的所有所述撤销日志按照所述事务节点的操作顺序进行排列;
7、所述事务回退单元包括:
8、事务确认模块,用于获取需要进行回退处理的所述事务的所述上下文管理信息,基于所述上下文管理信息确认需要进行回退处理的所述事务;
9、回退执行模块,连接所述事务确认模块,用于基于被确认的所述事务获取相关联的所有所述撤销日志,将所述撤销日志倒序处理后形成回退执行序列,按序执行所述回退执行序列,以对所述事务进行回退处理。
10、优选的,所述上下文管理信息至少包括事务流水号以及至少一类辅助确认信息;
11、所述事务确认模块包括:
12、流水确认子模块,用于获取需要进行回退处理的所述事务的所述上下文管理信息中的所述事务流水号,基于所述事务流水号初步确认需要进行回退处理的所述事务;
13、辅助确认子模块,连接所述流水确认子模块,用于根据所述上下文管理信息中的所述辅助确认信息对初步确认的所述事务进行辅助确认,最终确认得到需要进行回退处理的所述事务。
14、优选的,所述辅助确认信息包括事务类型、事务对象以及对应于所述事务对象的事务编号中的至少一类信息。
15、优选的,所述操作节点至少包括数据操作节点以及查询操作节点;
16、于所述数据操作节点上,对所述事务的操作涉及对事务数据的更改;
17、于所述查询操作节点上,对所述事务的操作仅涉及对事务数据的查询;
18、则所述撤销日志捕获单元仅针对所述数据操作节点生成对应的所述撤销日志。
19、优选的,所述辅助确认信息中还包括事务回退流水号,所述事务回退流水号用于标记所述事务的回退处理状态;
20、所述辅助确认子模块还用于根据所述事务回退流水号判断初步确认的所述事务是否已经被执行过回退处理,并在确认所述事务已经被执行过回退处理时取消本次回退处理。
21、优选的,所述撤销日志中至少包括所述上下文管理信息中的事务流水号、所述事务节点的操作对象以及所述操作对象的变更数据;
22、则所述事务回退单元根据所述事务流水号确认需要进行回退处理的所述事务,并进而查询得到对应的所有所述撤销日志;
23、所述事务回退单元还包括:
24、校验模块,分别连接所述事务确认模块和所述回退执行模块,用于对所有查询到的所述撤销日志分别进行校验,并在所述撤销日志内记载的所述操作对象与所述事务当前的所述操作对象不一致,和/或所述撤销日志内记载的所述变更数据与所述事务当前的事务数据不一致时,确认所述撤销日志校验失败;
25、则所述回退执行模块仅在对应于需要进行回退处理的所述事务中的所有所述撤销日志均校验成功时,对所述事务执行回退处理。
26、一种事务回退方法,其中,所述事务回退方法通过上述任意一项所述的一种事务回退系统对需要进行回退处理的事务进行回退处理;
27、则所述事务回退方法包括:
28、步骤s1:所述事务回退系统根据需要执行的事务生成上下文管理信息;
29、步骤s2:所述事务回退系统根据正向执行所述事务时各个事务节点的操作信息分别生成对应于所述事务节点的撤销日志,单个所述事务的所有所述撤销日志与所述上下文管理信息关联保存;
30、步骤s3:所述事务回退系统根据所述上下文管理信息及对应的所述撤销日志对已经执行完毕的所述事务进行回退处理。
31、优选的,单个所述事务的所有所述撤销日志按照所述事务节点的操作顺序进行排列;
32、所述步骤s3包括:
33、步骤s31:所述事务回退系统获取需要进行回退处理的所述事务的所述上下文管理信息,基于所述上下文管理信息确认需要进行回退处理的所述事务;
34、步骤s32:所述事务回退系统基于被确认的所述事务获取相关联的所有所述撤销日志,将所述撤销日志倒序处理后形成回退执行序列,按序执行所述回退执行序列,以对所述事务进行回退处理。
35、上述技术方案具有如下优点或有益效果:
36、本发明通过上下文管理单元及撤销日志捕获单元自动记录正向执行的事务的操作信息,以便事务回退单元可以根据记录的操作信息自动对需要回退的事务进行回退处理,减少了逆向业务的开发工作量。
1.一种事务回退系统,其特征在于,所述事务回退系统包括:
2.根据权利要求1所述的事务回退系统,其特征在于,单个所述事务的所有所述撤销日志按照所述事务节点的操作顺序进行排列;
3.根据权利要求2所述的事务回退系统,其特征在于,所述上下文管理信息至少包括事务流水号以及至少一类辅助确认信息;
4.根据权利要求3所述的事务回退系统,其特征在于,所述辅助确认信息包括事务类型、事务对象以及对应于所述事务对象的事务编号中的至少一类信息。
5.根据权利要求1所述的事务回退系统,其特征在于,所述操作节点至少包括数据操作节点以及查询操作节点;
6.根据权利要求4所述的事务回退系统,其特征在于,所述辅助确认信息中还包括事务回退流水号,所述事务回退流水号用于标记所述事务的回退处理状态;
7.根据权利要求2所述的事务回退系统,其特征在于,所述撤销日志中至少包括所述上下文管理信息中的事务流水号、所述事务节点的操作对象以及所述操作对象的变更数据;
8.一种事务回退方法,其特征在于,所述事务回退方法通过如上述权利要求1-7中任意一项所述的一种事务回退系统对需要进行回退处理的事务进行回退处理;
9.根据权利要求8所述的事务回退方法,其特征在于,单个所述事务的所有所述撤销日志按照所述事务节点的操作顺序进行排列;