基于HLC的分布式事务控制系统及方法
- 国知局
- 2024-07-31 23:15:09
本发明属于分布式事务控制,具体涉及一种基于hlc的分布式事务控制系统,本发明还涉及一种基于hlc的分布式事务控制方法。
背景技术:
1、随着微服务的发展,目前出现了一整套的微服务管理系统,这类系统提供自我恢复、弹性伸缩、自动部署和回滚、服务发现和负载均衡、机密和配置管理、存储编排、批处理等适合分体式微服务架构运行的支持环境。分布式事务特指多个请求同时访问多个功能模块的事务处理机制。在微服务中,分布式事务表现为,当存在单个操作包含多个服务请求,多个操作同时存在时,访问多个功能模块时,保证服务的事务性。
2、而目前微服务场景下,服务种类变多,事务参与者变多,常会出现事务执行失败的情形,事务执行失败的主要原因为大量并行请求下的冲突问题。解决方法主要分为两类:第一种方式是使用补偿事件结合本地事务进行处理。但是并不是所有资源端均能够提供本地事务,同时在高并发场景下会导致大量的补偿事件,使得事务运行效率下降。第二种方式是使用时间戳进行并发控制。但现有的时间戳获取主要采用单点的tso以及分布式的truetime机制。其中tso机制要求单点授时,为了其并发性能,该模块需要极高的硬件支持,或者通过限流来保证系统工作稳定。而truetime机制由于采用了原子钟加gps的设计方法,其硬件成本极高。
技术实现思路
1、本发明的目的是提供一种基于hlc的分布式事务控制系统,解决常见服务分布式事务控制算法在微服务场景下运行效率低的问题。
2、本发明的另一目的是提供一种基于hlc的分布式事务控制方法。
3、本发明所采用的第一种技术方案是,基于hlc的分布式事务控制系统,包括:
4、用于采集用户事务信息、用户事务信息规范化、发起全局事务、回调获得事务执行结果的事务管理模块;
5、用于进行事务执行和惰性事务恢复的事务协调模块;
6、用于提供数据接口,实现数据注入的资源管理模块,资源管理模块(3)包括若干个rm模块;
7、事务管理模块、事务协调模块和资源管理模块通过信号连接。
8、本发明第一种技术方案的特征还在于,
9、资源管理模块和事务协调模块之间通过信号连接有基于hlc的执行模块。
10、事务管理模块和资源管理模块均采用springboot构建,提供restful风格接口;
11、事务协调模块采用go构建的sdk,提供功能函数用于事务接入。
12、本发明所采用的第二种技术方案,基于hlc的分布式事务控制方法,具体包括以下步骤:
13、步骤1,用户通过事务管理模块注入全局事务编排信息;
14、步骤2,用户通过事务管理模块注入全局事务的分支事务信息;
15、步骤3,事务管理模块将步骤1和步骤2获取的全局事务编排信息和分支事务信息传输至事务协调模块;
16、步骤4,事务协调模块基于全局事务编排信息和分支事务信息进行事务处理,并在事务执行完成后返给用户事务处理结果。
17、本发明第二种技术方案的特征还在于,
18、全局事务编排信息包括全局事务id、分支事务统一描述、事务整体编排信息、回调资源描述;分支事务统一描述包括事务超时信息和事务类型,事务类型分为读事务和写事务。
19、分支事务信息包括分支事务运行id、事务资源描述信息、分支事务内容、分支事务编排信息;事务资源描述信息包括资源管理器描述信息和用户资源信息。
20、步骤4中进行事务处理具体包括以下步骤:
21、步骤4.1,事务协调模块从分支事务信息中收集资源管理器描述信息,并随机选择一个资源管理器作为pkrm,其余资源管理器作为srm,同时记录一条pkrm指向所有srm的描述信息;
22、步骤4.2,资源管理模块中的参与rm模块向事务协调模块反馈所有分支事务信息的hlc时钟,并选取其中最大的作为hlc时间戳;
23、步骤4.3,基于hlc时间戳,hlc时钟的结构体为{l.tx,srm.k},
24、其中,l.tx为步骤4.2获取的hlc时间戳,srm.k为srm的key;
25、rm模块对hlc时钟的结构体进行prewrite判断;
26、步骤4.4,若所有rm模块判断结果为prewrite可行,则进行commit操作,将分支事务信息发送至对应rm模块,对分支事务信息进行资源控制,全部处理完成后向用户反馈事务成功结果;
27、若rm模块判断结果中存在prewrite不可行,则向pkrm反馈,重新操作步骤4.2和步骤4.3,直至成功反馈事务成功结果或重复步骤4.2和步骤4.3到达次数限制后反馈事务失败结果。
28、步骤4.2中反馈所有分支事务信息的hlc时钟为执行模块进行本地时钟更新并传输给事务协调模块;
29、本地时钟更新具体为获取本地最新物理时间戳l′.j,同时每个rm模块会保留上一次进行时钟更新后的物理时间l.j和逻辑时间c.j;
30、若l′.j小于l.j,表示当前物理时间戳精度控制范围外时,则c.j进行自增;
31、若l′.j大于l.j,则表示本地物理时间需要更新,则将l.j更新为l′.j,同时将c.j置零。
32、步骤4.3中prewrite判断具体为根据l.tx进行hlc时钟更新以及合理性检查,srm将会按照hlc时间戳合理性控制进行可行性执行判断,若符合执行,将会结合rm模块中资源锁信息对资源进行冲突控制。
33、hlc时钟更新具体为,获取本地物理时间l′.j,本地hlc时间戳为{l.j,c.j};
34、若l′.j同时大于l.j和l.m,则表示所有时间戳均落后于实际时间,将l.j置为l′.j,同时将c.j置为0;
35、若l.j同时大于l′.j和l.m,则表示本rm的物理时间戳为最新的,故c.j自增;
36、若l.m同时大于l′.j和l.j,表示本机物理时钟出现了落后状态,将l.j置为l.m,同时c.j自增;
37、若以上场景均不符合,则表示本机物理时间戳失效,将l.j置为l′.j,同时将c.j置为0;
38、合理性检查具体为对来自事务协调模块的hlc时间戳依据事务类型进行时间戳合理性判断;判断当前资源是否带锁,即lock字段是否存在数据,若存在数据则拒绝合理性检查,若不存在数据则进行时间戳判断。
39、本发明的有益效果是:
40、本发明基于hlc的分布式事务控制方法通过采用hlc时间戳作为事务时间戳的获取方法,提供了低成本和分布式的时间戳获取方法,有效解决了常见方法中的单点问题以及成本过高的问题。同时通过冲突预检测有效减少了在高冲突场景下可能出现的大量回滚时间,有效提高了事务的运行效率。通过采用低业务侵入方法,让用户可以简单的将自身业务在系统中传输后即可直接使用,提供了诸多便利。
技术特征:1.基于hlc的分布式事务控制系统,其特征在于,包括:
2.根据权利要求1所述的基于hlc的分布式事务控制系统,其特征在于,所述资源管理模块(3)和事务协调模块(2)之间通过信号连接有基于hlc的执行模块(4)。
3.根据权利要求2所述的基于hlc的分布式事务控制系统,其特征在于,所述事务管理模块(1)和资源管理模块(3)均采用springboot构建,提供restful风格接口;
4.基于hlc的分布式事务控制方法,其特征在于,采用如权利要求3所述的基于hlc的分布式事务控制系统,具体包括以下步骤:
5.根据权利要求4所述的基于hlc的分布式事务控制方法,其特征在于,所述全局事务编排信息包括全局事务id、分支事务统一描述、事务整体编排信息、回调资源描述;所述分支事务统一描述包括事务超时信息和事务类型,所述事务类型分为读事务和写事务。
6.根据权利要求4所述的基于hlc的分布式事务控制方法,其特征在于,所述分支事务信息包括分支事务运行id、事务资源描述信息、分支事务内容、分支事务编排信息;所述事务资源描述信息包括资源管理器描述信息和用户资源信息。
7.根据权利要求4所述的基于hlc的分布式事务控制方法,其特征在于,步骤4中所述进行事务处理具体包括以下步骤:
8.根据权利要求7所述的基于hlc的分布式事务控制方法,其特征在于,所述步骤4.2中反馈所有分支事务信息的hlc时钟为执行模块(4)进行本地时钟更新并传输给事务协调模块(2);
9.根据权利要求7所述的基于hlc的分布式事务控制方法,其特征在于,所述步骤4.3中prewrite判断具体为根据l.tx进行hlc时钟更新以及合理性检查,srm将会按照hlc时间戳合理性控制进行可行性执行判断,若符合执行,将会结合rm模块(5)中资源锁信息对资源进行冲突控制。
10.根据权利要求9所述的基于hlc的分布式事务控制方法,其特征在于,所述hlc时钟更新具体为,获取本地物理时间l′.j,本地hlc时间戳为{l.j,c.j};
技术总结本发明公开的基于HLC的分布式事务控制系统及方法,系统包括通过信号连接的事务管理模块、事务协调模块、资源管理模块,资源管理模块包括若干个RM模块;方法包括用户通过事务管理模块注入全局事务编排信息和全局事务的分支事务信息,事务管理模块将获取的全局事务编排信息和分支事务信息传输至事务协调模块,事务协调模块基于全局事务编排信息和分支事务信息进行事务处理,并在事务执行完成后返给用户事务处理结果。本发明解决了解决常见服务分布式事务控制算法在微服务场景下运行效率低的问题。技术研发人员:王靖恺,李龙海,付少锋,徐鸿韬受保护的技术使用者:西安电子科技大学技术研发日:技术公布日:2024/7/29本文地址:https://www.jishuxx.com/zhuanli/20240730/196637.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表