一种面向分布式数据库的补偿事务实现方法与流程

文档序号:37543767发布日期:2024-04-08 13:45阅读:8来源:国知局
一种面向分布式数据库的补偿事务实现方法与流程

本发明属于分布式数据库,具体的说是一种面向分布式数据库的补偿事务实现方法。


背景技术:

1、分布式系统已成为现代软件架构的中心部分,可以提供高可用性、可扩展性和故障恢复能力,在这些系统中,需要处理跨多个服务的业务操作,这就导致了分布式事务的需求。分布式事务是指事务的参与者、支持事务的服务器,目前分布式事务主要有以下几种模式:at模式、saga模式、tcc模式、xa模式和补偿事务模式。at模式是一种无侵入的分布式事务解决方案,零学习成本,但sql都由框架托管统一执行,会存在脏写问题;saga模式是一种长事务解决方案,第一阶段就操作db,会存在脏读问题;tcc模式适用于核心系统等对性能有很高要求的场景,事务执行太久会锁行,避免了脏读;xa模式是强一致性的解决方案,但性能低而使用较少;而补偿事务的核心思想是通过执行一系列的反向操作来撤销已完成的业务操作,这些反向操作被称为“补偿操作”,它们可以确保在发生错误或异常情况时,系统能够恢复到一致的状态,具有解耦、容错性和灵活性等优点。

2、如申请公开号为cn112182103a的中国专利公开了一种分布式数据库及其实现跨节点事务强一致性的方法,其特征是,所述分布式数据库采用存储和计算分离的构架,包括:协调节点、数据节点以及编目节点三种类型节点,每个类型的节点分别可以水平扩展,协调节点负责分发请求到需要参与的数据节点,数据节点负责数据的访问与存储,编目节点存放系统元数据以及分区相关信息,一个事务经由所述协调节点发起,下发到一个或多个数据节点组上进行操作,分布式数据库引入作为参与者的数据节点之间的事务协商与事务补偿机制,在系统局部出现故障导致参与者无法正常收到作为协调者的协调节点的事务控制消息时,通过参与者之间相互状态确认,从而判断事务是应该提交还是回滚,以避免数据的不一致问题。

3、如授权公告号为cn110019469b的中国专利公开了分布式数据库数据处理方法、装置、存储介质及电子装置,本发明包括:数据库导入导出管理节点在接收到用于导出分布式数据库中的数据的导出请求后,获取当前时刻活跃事务列表以及导出表分布信息;数据库导入导出管理节点根据导出表分布信息通知对应数据库执行数据导出操作;数据库导入导出管理节点在确定对应数据库执行完所述数据导出操作之后,将活跃事务列表发送给对应数据库的数据库代理节点;数据库导入导出管理节点在接收到数据库代理节点返回的数据一致性反向补偿语句之后,将对应数据库导出的数据导入到预定数据库中,并指示预定数据库执行数据一致性反向补偿语句。

4、以上现有技术均存在以下问题:1)实现复杂,对数据库性能影响较大,不适合高并发高性能场景;2)节点重启后补偿任务丢失。


技术实现思路

1、针对现有技术的不足,本发明提出了一种面向分布式数据库的补偿事务实现方法,具体包括:客户端发起事务请求,执行目录判断事务sql是否超过限定值,在数据节点接收到事务请求后,判断是事务提交或事务回滚,并将执行结果返回给协调节点进行确认和验证,操作完成,协调节点提交该事务并进行定时清理,将结果返回给客户端,保证了分布式环境下数据的一致性,降低事务处理过程的复杂度。

2、为实现上述目的,本发明提供如下技术方案:

3、一种面向分布式数据库的补偿事务实现方法,包括:

4、步骤s1:客户端发起事务请求,通过执行目录判断事务sql是否超过限定值,若超过则后端数据库返回错误,同时事务信息存储在事务sql映射模块;

5、步骤s2:协调节点为步骤s1中客户端发起的事务分配一个时间戳,同时将该事务的操作发送到数据节点;

6、步骤s3:数据节点接收到事务请求后,判断是事务提交或事务回滚,并将执行结果返回给协调节点进行确认和验证,若验证失败,则协调节点通知该数据节点并进行补偿操作;

7、步骤s4:操作完成,协调节点提交该事务,并进行定时清理,将执行结果返回给客户端。

8、具体的,所述步骤s1的具体步骤包括:

9、步骤s101:确定事务执行的目录路径并读取包含的sql脚本文件;

10、步骤s102:分析sql脚本文件内容以确定是否存在可能导致事务超过限定值的sql语句或操作并输出分析结果,根据分析结果,判断事务的sql语句是否超过预定的限定值;

11、步骤s103:启动事务并监控其执行情况,若事务执行过程中超过限定值,后端数据库响应并立即返回错误;

12、步骤s104:接收错误并进行处理,若事务执行成功,则继续处理其他事务或关闭连接。

13、具体的,所述步骤s2的具体步骤包括:

14、步骤s201:客户端向协调节点发送一个事务请求,协调节点接收到事务请求后,对其进行解析和处理;

15、步骤s202:协调节点根据补偿规则生成一个全局唯一的时间戳,并将生成的时间戳分配给步骤s1中客户端发起的事务;

16、步骤s203:协调节点将生成的时间戳与事务请求一起转发给相关的数据节点。

17、具体的,所述步骤s202中的时间戳具体包括:事务开始时间、事务提交时间和事务回滚时间。

18、具体的,所述步骤s3的具体步骤包括:

19、步骤s301:数据节点接收到协调节点转发的事务请求,根据时间戳进行排序和执行,判断是进行读取、写入或其他操作;

20、步骤s302:根据判断结果,数据节点对本地数据进行读取或修改操作,并判断事务的状态;

21、步骤s303:数据节点判断事务可以提交,则将操作结果持久化到数据库中,并返回确认消息给协调节点,需要回滚事务,则撤销之前执行的相关操作,并将数据库恢复到事务开始前的状态,然后返回确认消息给协调节点;

22、步骤s304:协调节点接收到数据节点的确认消息后,利用三阶段提交策略对操作结果进行验证,验证通过,则说明该数据节点的操作成功完成,验证失败,则需要进行回滚。

23、具体的,所述步骤s304中三阶段提交策略具体为:在准备阶段和提交阶段之间增加了一个预提交阶段,使协调节点向所有的参与节点发送预提交请求,根据参与节点的响应判断提交或回滚操作。

24、具体的,所述步骤s304中补偿操作的具体步骤包括:

25、步骤s3041:确定需要补偿的事务,定义补偿规则;

26、步骤s3042:根据补偿规则,通过事务补偿映射将分布式事务中的操作映射到补偿操作;

27、步骤s3043:通过补偿执行标志映射记录每个操作的补偿执行状态;

28、步骤s3044:补偿操作执行成功则提交数据库,并通过提交成功映射记录每个操作的提交状态。

29、具体的,所述步骤s3041中补偿规则包括:反向操作、数据修复、事务回滚、状态恢复、顺序执行、可重复性和一致性保证。

30、具体的,所述步骤s4的具体步骤包括:

31、步骤s401:协调节点收到所有参与节点的响应后,确认所有操作都已完成;

32、步骤s402:协调节点将事务提交到数据库或分布式事务管理器,并用提交成功映射记录提交状态;

33、步骤s403:在确认事务提交成功后,协调节点定时清理历史数据、释放资源操作;

34、步骤s404:将事务处理的结果返回给客户端。

35、一种面向分布式数据库的补偿事务实现系统,包括:事务sql映射模块、事务提交成功映射模块、事务回滚映射模块、补偿tmp映射模块、补偿映射模块、补偿执行标志映射模块,

36、所述事务sql映射模块,用于判断事务sql是否超过上限或提交限定值;

37、所述事务提交成功映射模块,用于记录分布式事务提交成功的事务映射,并在有定时任务时对数据进行清理;

38、所述事务回滚映射模块,用于记录回滚的分布式事务,并在有定时任务时对其中的数据进行清理;

39、所述补偿tmp映射模块模块,用于记录要进行补偿的临时节点事务;

40、所述补偿映射模块,用于记录要进行补偿的节点事务;

41、所述补偿执行标志映射模块,用于标记某个节点正在补偿事务。

42、与现有技术相比,本发明的有益效果是:

43、1.本发明提出一种面向分布式数据库的补偿事务实现系统,并进行了架构、运行步骤和流程上的优化改进,系统具备流程简单,投资运行费用低廉,生产工作成本低的优点,在保证功能完善、请求方式不变、性能损耗细微的基础上,实现了不影响数据的补偿事务方案。

44、2.本发明提出一种面向分布式数据库的补偿事务实现方法,在数据方面,通过本地文件进行各个节点事务状态、sql情况的记录,既能保证sql补偿效率,又能实现节点重启补偿事务不丢失;在功能方面,当进入补偿事务之后,仅对目录级别进行加锁,最小化对业务的影响,定时线程会自动进行补偿任务,当补偿成功之后会释放锁,这个过程中业务是无感知的。

45、3.本发明提出一种面向分布式数据库的补偿事务实现方法,使用内存和本地文件结合的方式对需要进行补偿的事务进行记录,既能保证效率又能保证重启后补偿任务不丢失,在保证功能完善、请求方式不变、性能损耗细微的基础上,实现了不影响数据的补偿事务方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1