[发明专利]一种分布式事务的实现方法及系统在审
申请号: | 202111570290.X | 申请日: | 2021-12-21 |
公开(公告)号: | CN114238353A | 公开(公告)日: | 2022-03-25 |
发明(设计)人: | 王浩之;张琦;王瀚墨 | 申请(专利权)人: | 山东浪潮科学研究院有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F16/22 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 郗艳荣 |
地址: | 250100 山东省济*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 事务 实现 方法 系统 | ||
1.一种分布式事务的实现方法,其特征在于:采用常驻内存的分布式锁保存分布式事务处理过程中的数据,实现分布式事务的隔离性;所述分布式锁保存在常驻内存的锁表中,以便查找和修改;多个服务器节点之间通过共识算法实现数据和锁的同步,保证分布式事务的一致性;通过事务日志保证分布式事务的完整性和持久性;此外,为了降低IO次数,除了读取新值和最终提交以外,不对磁盘进行读写。
2.根据权利要求1所述的分布式事务的实现方法,其特征在于:在分布式事务操作数据库时创建锁,用来记录分布式事务和数据信息,实现分布式事务的隔离性;具体过程如下:
第一步,分布式事务在操作数据库之前,先通过并发管理器检查操作类型并访问锁表,根据将要操作的数据的Key在锁表中查询,如果查询到对应的锁,并且该锁不是本事务持有,则阻塞等待,直到持有锁的分布式事务结束并释放锁;如果没有查询到对应的锁,或查询到对应的锁且该锁被本分布式事务持有,则继续执行本次操作;
第二步,分布式事务的本次操作执行完成后,将本次操作的数据的Key和Value传递给并发管理器;
第三步,并发管理器通过数据的Key,Value和分布式事务的ID创建锁对象,并在锁中保存数据的Key,Value和分布式事务信息;
第四步,并发管理器将新创建的锁添加到锁表中。
3.根据权利要求2所述的分布式事务的实现方法,其特征在于:所述第一步中,创建锁表对象存放在内存中,所述锁表采用哈希表或者B+树的数据结构,用于存放锁。
4.根据权利要求2所述的分布式事务的实现方法,其特征在于:所述第四步中,如果本分布式事务已经持有了将要操作的数据的Key上的锁,则并发管理器根据新锁的数据更新锁表中原有的锁;否则将新建的锁添加到锁表;
当分布式事务结束后,从锁表中删除分布式事务持有的锁,并通知等待该锁的分布式事务,使得被阻塞的分布式事务可以执行。
5.根据权利要求1所述的分布式事务的实现方法,其特征在于:所述事务日志用于记录分布式事务对数据库做的改动,具体过程如下:
第一步,在分布式事务提交之前根据锁中保存的Key和Value获取最终操作结果,并根据最终操作结果构建事务日志,事务日志中包含分布式事务的最终操作结果;
第二步,根据先写日志原则,在数据写入磁盘之前先将事务日志写入磁盘;如果事务日志写入失败,则回滚分布式事务,清理内存;
第三步,事务日志写入成功之后,再将分布式事务的最终操作结果写入磁盘;
当在事务日志写入成功之后,服务器节点发生故障,导致最终操作结果未能写入磁盘或者数据库数据丢失时,通过事务日志进行恢复即可。
6.根据权利要求1或2所述的分布式事务的实现方法,其特征在于:通过共识算法实现分布式事务的一致性,具体过程如下:
第一步,每次创建新的锁之前,通过共识算法将锁的信息同步给follower节点;
第二步,follower节点根据收到的锁的信息在本节点创建锁,follower节点的锁中同样包含数据的Key和Value,以及分布式事务信息;
第三步,在分布式事务提交之前通过共识算法通知follower节点;
第四步,follower节点在收到提交通知之后,在本节点执行提交流程,包括日志生成和写入磁盘。
7.根据权利要求6所述的分布式事务的实现方法,其特征在于:所述锁的信息是指分布式锁对应的数据Key,Value以及分布式事务信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东浪潮科学研究院有限公司,未经山东浪潮科学研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111570290.X/1.html,转载请声明来源钻瓜专利网。