CN111061810B - 基于分布式逻辑时间戳的分布式事务管理方法及系统 - Google Patents
基于分布式逻辑时间戳的分布式事务管理方法及系统 Download PDFInfo
- Publication number
- CN111061810B CN111061810B CN201911291498.0A CN201911291498A CN111061810B CN 111061810 B CN111061810 B CN 111061810B CN 201911291498 A CN201911291498 A CN 201911291498A CN 111061810 B CN111061810 B CN 111061810B
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- time
- distributed
- data
- 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.)
- Active
Links
- 238000007726 management method Methods 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 10
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于分布式逻辑时间戳的分布式事务管理方法及系统,方法包括:对事务的事务开始时间进行设置;若数据节点与协调节点的本地逻辑时间的相差值超出预设的阈值,则将数据节点的本地逻辑时间进行校时,并使协调节点回滚该事务,在将协调节点的时间进行校时后,重试该事务;若事务预提交时间与事务开始时间相差值大于该事务的事务容忍误差,则将事务预提交时间以及该事务的预提交消息发送到所有参与该事务的数据节点;根据两个不同事务的时间戳的相差值情况,选取一个数据节点作为仲裁节点以对两个不同事务的时间戳顺序进行仲裁。本发明能够在满足分布式存储和处理的要求的同时,减少网络的开销,从而有效提升系统的整体性能。
Description
技术领域
本发明涉及数据库技术领域,尤其是涉及一种基于分布式逻辑时间戳的分布式事务管理方法及系统。
背景技术
分布式数据库管理系统是分布式系统中的实际应用中非常重要的部分,它不仅具备和使用了所有分布式系统的特性,还对数据存储,处理提出了更高的要求。数据库管理系统自上世纪八十年代开始被广泛的应用,最初数据库都在一台计算机上部署,所有交易在这一个单机数据库内处理。随这数据量和业务量的急剧扩大,单机已无法满足数据存储和数据处理能力的要求,分布式数据库系统成为各类应用部署的首选架构。解决好分布式数据库中分布式存储,分布式运算和高并发下的低延时响应对其他分布式系统有极大的借鉴意义。
在分布式数据系统中通常需要维护一个全局唯一性的ID来区别并发的事务,标识产生或变更的数据。这个ID通常有如下特征:不能有单点故障,以时间为序或包含时间,可以控制数据分片的ID,不要太长。
实现这样一个全局唯一的ID通常结合事务发起的时间,依赖时间戳加上其他的一些标识位来。这个时间戳的产生一般有两种:基于硬件的时钟和基于软件实现的逻辑时钟。前者利用原子的特性,利用硬件实现,保证每个时钟设备在很长时间内相互误差小到可以忽略。这样参与集群的各计算节点可以直接查询并使用本地时钟作为全局时间戳。其缺点是成本非常高,无法推广应用。实际应用中更多利用软件实现的逻辑时钟。现有的实现多是在分布式系统计算机集群中部署一台或一个小的集群(全局事务管理节点GTM)来产生分发一个统一的包含时间戳全局ID,集群中所有其他计算机同步查询GTM来获得一个ID。这个ID具有递增属性,从而保证每次查询得到的ID唯一。这样实现的缺点是当系统集群规模很大,并发操作很多时,GTM的负载会很重,同时网络开销会非常大,导致系统整体性能降低。同时,为避免单点故障使用小集群中实现GTM也非常复杂,且无法完全保证可靠性。
发明内容
本发明实施例提供了一种基于分布式逻辑时间戳的分布式事务管理方法及系统,能够避免强制所有参与节点从GTM中获取唯一ID的步骤,从而能够在满足分布式存储和处理的要求的同时,减少网络的开销,提升系统的整体性能。
为了解决上述技术问题,本发明实施例提供了一种基于分布式逻辑时间戳的分布式事务管理方法,所述分布式事务的数据库包括协调节点、编目节点和数据节点,各个节点的本地逻辑时间分别根据预设的全局逻辑时间进行同步校时;
所述基于分布式逻辑时间戳的分布式事务管理方法包括:
在事务开始时,将该事务的事务开始时间设为所述协调节点的本地逻辑时间;
在所述数据节点首次接收到所述协调节点发送的消息时,判断所述数据节点的本地逻辑时间与所述协调节点的本地逻辑时间的相差值是否超出预设的第一误差阈值;若是,则将所述数据节点的本地逻辑时间进行同步校时,同时,控制所述数据节点返回错误消息至所述协调节点,以使所述协调节点回滚该事务,并将所述协调节点的本地逻辑时间进行同步校时后,重试该事务;
在事务预提交时,将该事务的事务预提交时间设为所述协调节点的当前本地逻辑时间,判断所述事务预提交时间与所述事务开始时间的相差值是否大于该事务的事务容忍误差;若否,则暂缓执行;若是,则将所述事务预提交时间以及该事务的预提交消息发送到所有参与该事务的数据节点;
当两个不同事务访问相同数据时,判断所述两个不同事务的时间戳的相差值是否小于预设的第二误差阈值;若是,则从目标数据节点中按预设的算法选取一个数据节点作为仲裁节点,以对所述两个不同事务的时间戳顺序进行仲裁。
进一步地,所述预设的第一误差阈值为所述全局容忍误差的两倍。
进一步地,所述第二误差阈值的设定方式为:在访问相同数据的不同事务中,找出最大的事务容忍误差,将所述第二误差阈值设定为所述最大的事务容忍误差的两倍。
进一步地,所述全局容忍误差为根据系统状况进行动态变更;所述方法还包括:
当所述协调节点与所述编目节点进行同步校时时,获取当前系统全局容忍误差并进行记录;
在事务获取事务开始时间时,将所述当前系统全局容忍误差保存至该事务的元数据控制块中。
进一步地,所述方法还包括:
当事务修改、删除或插入数据时,将该事务的标识ID作为版本以对被改动的所述数据进行标记。
进一步地,事务的标识ID由该事务的事务开始时间以及参与该事务的协调节点的节点号组成。
为了解决相同的技术问题,本发明还提供了一种基于分布式逻辑时间戳的分布式事务管理系统,所述分布式事务的数据库包括协调节点、编目节点和数据节点,各个节点的本地逻辑时间分别根据预设的全局逻辑时间进行同步校时;
所述基于分布式逻辑时间戳的分布式事务管理系统包括:
事务时间管理模块,用于在事务开始时,将该事务的事务开始时间设为所述协调节点的本地逻辑时间;
事务访问管理模块,用于在所述数据节点首次接收到所述协调节点发送的消息时,判断所述数据节点的本地逻辑时间与所述协调节点的本地逻辑时间的相差值是否超出预设的第一误差阈值;若是,则将所述数据节点的本地逻辑时间进行同步校时,同时,控制所述数据节点返回错误消息至所述协调节点,以使所述协调节点回滚该事务,并将所述协调节点的本地逻辑时间进行同步校时后,重试该事务;
事务预提交管理模块,用于在事务预提交时,将该事务的事务预提交时间设为所述协调节点的当前本地逻辑时间,判断所述事务预提交时间与所述事务开始时间的相差值是否大于该事务的事务容忍误差;若否,则暂缓执行;若是,则将所述事务预提交时间以及该事务的预提交消息发送到所有参与该事务的数据节点;
分布式仲裁模块,用于当两个不同事务访问相同数据时,判断所述两个不同事务的时间戳的相差值是否小于预设的第二误差阈值;若是,则从目标数据节点中按预设的算法选取一个数据节点作为仲裁节点,以对所述两个不同事务的时间戳顺序进行仲裁。
进一步地,所述预设的第一误差阈值为所述全局容忍误差的两倍。
进一步地,所述第二误差阈值的设定方式为:在访问相同数据的不同事务中,找出最大的事务容忍误差,将所述第二误差阈值设定为所述最大的事务容忍误差的两倍。
进一步地,所述全局容忍误差为根据系统状况进行动态变更;所述系统还包括:
全局容忍误差记录模块,用于当所述协调节点与所述编目节点进行同步校时时,获取当前系统全局容忍误差并进行记录;
全局容忍误差更新模块,用于在事务获取事务开始时间时,将所述当前系统全局容忍误差保存至该事务的元数据控制块中。
通过实施本发明,能够基于全分布的逻辑时钟机制,避免了强制所有参与节点从GTM中获取唯一ID的步骤,从而能够在满足分布式存储和处理的要求的同时,减少了网络的开销,有效提升了系统的整体性能。
附图说明
图1是本发明一实施例提供的分布式数据库的系统架构示意图;
图2是本发明一实施例提供的各节点进行同步校时的应用示意图;
图3是本发明一实施例提供的基于分布式逻辑时间戳的分布式事务管理方法的流程示意图;
图4是本发明一实施例提供的基于分布式逻辑时间戳的分布式事务管理方法的另一流程示意图;
图5是本发明一实施例提供的基于分布式逻辑时间戳的分布式事务管理系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,本发明实施例提供了一种基于分布式逻辑时间戳的分布式事务管理方法,所述分布式事务的数据库包括协调节点、编目节点和数据节点,各个节点的本地逻辑时间分别根据预设的全局逻辑时间进行同步校时;
请参见图1,在该图展示的系统中,以一个分布式数据库(所述分布式事务的数据库)为例,采用存储和计算分离的构架,系统中存在三种不同类型的节点,分别可以水平扩展。其中,协调节点负责分发请求到需要参与的数据节点,数据节点负责数据的访问与存储,编目节点存放系统元数据以及分区相关信息。为保证系统的高可靠性,每个主数据节点都会有多个从数据节点,主数据节点通过同步日志将数据同步到从节点。同理编目节点也有主节点和从节点。协调节点由于只有中间运算处理过程,不保留状态,没有从节点。
为了简要描述,文中部分术语采用以下的缩写进行描述,需要说明的是,术语所对应的缩写与该术语所代表的含义一致,术语解释如下:
LLT(Local Logical Timestamp,本地逻辑时间):每个节点维护的本地逻辑时间(最小单位:microsecond)。
ULT(Universal Logical Timestamp,全局逻辑时间):全局逻辑时间(最小单位:microsecond)。
LRT(Local Real Timestamp):节点本地UTC时间。
ULT Tolerance(Universal Logical Timestamp Tolernace,全局容忍误差):该误差可根据系统状态动态调整。初始默认值可设为1ms。
ULT SyncInternal(Universal Logical Timestamp SynchronizationInterval):全局同步时间间隔。
TBT(Transaction Begin Timestamp):事务的开始时间。
TPCT(Transaction Pre-Commit Timestamp):事务的预提交(precommit)时间。
TCT(Transaction Commit Timestamp):事务的提交时间。
请参见图2,本发明提供的逻辑时间计算及同步机制如下:
ULT分配可以放在独立节点上。但由于系统中编目节点负载相对较轻,作为优选方案,可以将生成及维护ULT的功能集成到编目节点中。在全系统启动时ULT可设为编目节点的LRT。之后ULT由编目主节点基于CPU tick差值累加生成。这样ULT接近于真实时间,但又对精确机器时间没有依赖。在编目节点上ULT是递增的,最小精确到微秒(us)。编目主节点每隔ULT SyncInterval的时间将ULT写到磁盘上进行持久化,并通过日志复制到编目节点的备节点上。每次编目主节点重启或切换时,新的主节点比较日志上的(ULT+ULTSyncInterval)和当前LRT,取其较大值为新的ULT。
各协调节点和数据节点启动时从编目节点获取ULT作为自己的LLT。数据节点的备节点直接跟主节点同步获取并设置其LLT。系统运行过程中,各协调节点与数据节点分别定期与编目节点使用NTP算法同步校时,调整各节点的LLT。同步的时间间隔(ULTSyncInterval)可配置,默认可设为60秒。同步具体步骤如下:
NTP Client向NTP Server发送请求计算延时(定义需要同步时间的节点为NTPClient,同步时间源(如编目主节点)为NTP Server);
通过一次请求来回可以计算时差,其中,
t1为NTP Client发送请求时的LLT;
t2为NTP Server接收时的LLT;
t3为NTP Server发送回复时的LLT;
t4为NTP Client接收时的LLT;
网络延迟:Network Delay=(t2-t1)+(t4-t3);
时差:Time Delay=[(t2-t1)+(t3-t4)]/2;
针对时差阈值ULT Tolerance(默认:1ms);
如果时差Time Delay>0,设置client LLT+=Time Delay;
如果时差Time Delay<0,强制client端暂停Time Delay时间;
如果网络延迟大于时差Network Delay>ULT Tolerance;
重新发起时间同步;
如果5次大于ULT Tolerance,设置ULT Tolerance=ULT Tolerance*changefactor如果一段时间没有额外校时请求,设置ULT Tolerance=ULT Tolerance/changefactor;可设置changefactor=1.2;
通过上面的机制,各协调节点/数据与编目节点校时后,我们可以保证各协调节点/数据节点之间逻辑时间(LLT)的误差不超过2*ULT Tolerance。
在本发明实施例中,在分布式事务中使用逻辑时间来判断事务的先后顺序及数据的可见性。在本分布式数据库系统中,每个事务会选取一个协调节点开始访问数据库,选取可以由应用指定,或任意一个,或通过load balance分配一个。同时协调节点个数可以根据系统负载动态调整。分布式事务会使用二段式提交的机制(XA)来保持各节点一致性。下面将基于该机制描述整个事务访问的流程:
请参见图3-4,所述基于分布式逻辑时间戳的分布式事务管理方法包括:
步骤S1,在事务开始时,将该事务的事务开始时间设为所述协调节点的本地逻辑时间;进一步地,事务的标识ID由该事务的事务开始时间以及参与该事务的协调节点的节点号组成。
进一步地,系统的全局容忍误差为根据系统状况进行动态变更;当所述协调节点与所述编目节点进行同步校时时,获取当前系统全局容忍误差并进行记录;
在事务获取事务开始时间时,将所述当前系统全局容忍误差保存至该事务的元数据控制块中。
在本发明实施例中,事务开始时,在协调节点拿LLT,将其设置为事务开始时间(TBT)。相应事务的ID(TID)可以由TBT时间和协调节点的节点号组成。如果使用50位表示精确到微秒时间,14位标识协调节点号,则系统可支持16K节点使用35年时间而64位的ID不会重复。如果希望支持更大的系统集群或更长的时间,可以使用更长位数标识时间和节点数。此处以64位ID为例:
由于系统ULT Tolerance是根据系统状况(包括网络延时)动态变更的,各个事务发起时的ULT Tolerance可能会不同。故而系统会在协调节点与编目节点校时是会获取当前系统ULT Tolerance,并在事务获取TBT时下发该容忍值,并保存在该事务相关的元数据控制块中。
步骤S2,在所述数据节点首次接收到所述协调节点发送的消息时,判断所述数据节点的本地逻辑时间与所述协调节点的本地逻辑时间的相差值是否超出预设的第一误差阈值;若是,则将所述数据节点的本地逻辑时间进行同步校时,同时,控制所述数据节点返回错误消息至所述协调节点,以使所述协调节点回滚该事务,并将所述协调节点的本地逻辑时间进行同步校时后,重试该事务;进一步地,所述预设的第一误差阈值为系统的全局容忍误差的两倍。进一步地,当事务修改、删除或插入数据时,将该事务的标识ID作为版本以对被改动的所述数据进行标记。
需要说明的是,在第一个协调节点与数据节点的消息中包含TBT和协调节点的LLT,数据节点收到后用自身的LLT对比消息中协调节点的LLT,如果两者相差不超过2*ULTTolerance,则数据节点正常执行操作,否则数据节点自身与编目节点校正时间,同时返回错误,要求协调节点先回滚该事物,然后跟编目节点校正时间后重试该事务。当事务修改/删除/插入数据时,需要用该事物的标识ID作为版本来标记改动的数据。
步骤S3,在事务预提交时,将该事务的事务预提交时间设为所述协调节点的当前本地逻辑时间,判断所述事务预提交时间与所述事务开始时间的相差值是否大于该事务的事务容忍误差;若否,则暂缓执行;若是,则将所述事务预提交时间以及该事务的预提交消息发送到所有参与该事务的数据节点;
在本发明实施例中,事务预提交时,使用协调节点当前LLT作为事务的TPCT,连同预提交消息发送到所有参与的数据节点。系统要求TPCT>TBT+ULT Tolerance,否则暂缓执行直到满足条件。不同的事务在数据节点上根据事务TID来决定事务的先后顺序。最典型的使用场景就是在数据多版本场景下判断数据的可见性。
步骤S4,当两个不同事务访问相同数据时,判断所述两个不同事务的时间戳的相差值是否小于预设的第二误差阈值;若是,则从目标数据节点中按预设的算法选取一个数据节点作为仲裁节点,以对所述两个不同事务的时间戳顺序进行仲裁。进一步地,所述第二误差阈值的设定方式为:在访问相同数据的不同事务中,找出最大的事务容忍误差,将所述第二误差阈值设定为所述最大的事务容忍误差的两倍。
需要说明的是,在分布式场景中,由于事务从多个不同的协调节点发起,各自独立获得自己的时间戳,在高并发的场景下这些时间戳有可能非常接近。同时由于各个事务发起的协调节点与编目节点校时的时间不同,他们获取的ULT Tolerance也可能不尽相同。系统需要分别记录每个事务开始时对应的ULT Tolerance。假设两个事务分别获取了ULTTolerance A和ULT Tolerance B。当两个事务的时间戳差距小于2*max(ULT Tolerance A+ULT Tolerance B)时,我们认为这两个事务时间戳在先后顺序上属于误差范围内,故而无法判断,需要仲裁。需要注意的是,只有在不同事务需要访问相同数据时才有可能需要仲裁,否则只需各自执行就好了。
我们可以从两事务共同参与的数据节点中使用固定算法(如哈希算法)选定一个数据节点作为仲裁节点,由其判断事务先后。例如事务A的参与节点包括(1,2,3,4),事务B的参与节点包括(3,4,5,6),那么仲裁节点就是Func(3,4)。这样以后所有涉及事务A与B的比较都会在同样的节点上进行仲裁。以第一次做仲裁查询时生成的结果作为这两个时间戳先后顺序的判断,并将该结果保留下来以待后继查询用。仲裁的结果可以在A、B事务都结束后清除,或者是在系统最老的事务新于max(TBT A,TBT B)后清除。仲裁的算法不限,可以随机,也可以比较节点ID,或比较交易类型按优先级来判断。
仲裁结果需要通过一定的方式同步到仲裁节点的备节点上,从而保证单节点故障时,备节点升为主节点后仍然可以作为仲裁节点,且返回相同的仲裁结果。同步方式可以参照现有的主备同步方式。
仲裁发生的几率不高,仅限于两个时间戳非常接近,且用到共同数据时才需要进行。仲裁是按参与事务的节点计算的,所以完全分布,没有单点故障或性能瓶颈。故而仲裁不会对系统整体性能带来影响。
需要指出的是在各种的不同场景,可以使用同样的机制根据需要仲裁来满足系统需求。上面的示例中通过比较不同的时间戳来判断事务开始的先后,或者判断事务提交的先后,或者对比一事务开始时间和另一事物提交时间戳来判断数据的可见性。实际应用中可以分布式的对比其他类型的关键值来判断先后顺序。
需要说明的是,对于以上方法或流程实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本发明实施例所必须的。
可以理解的是,本发明提供了一个全系统共同维护的逻辑时间戳,在分布式数据库中使用该时间戳来判断事务的开始顺序及数据的可见性。在事务的时间戳接近无法直接判断先后时,系统将通过分布式的仲裁机制来裁决。从而实现了分布式数据库中实现无单一瓶颈的分布式事务管理机制。
与现有技术相比,本发明实施例具有如下有益效果:
本系统相对硬件全局时间戳的实现具有低成本,易实施,易普及的优点。相对于现有其他软件的分布式逻辑时间戳的实现又有如下优势:
1.逻辑时间戳由参与事务的节点生成,无需依赖某一个全局统一的时间戳管理节点生成,从而减少了相应的网络交换,避免了单节点的性能瓶颈和单点故障,能提供高频高并发的事务服务。
2.全局的容错参数是动态自适应的,能够适应不同的分布式环境和场景。
3.在整个事务流程中,需要等待容错时间参数的仅限于事务开始时协调节点和数据节点的对时,以及要求事务开始于提交之间的间隔,而不会因为并发的事务而产生容错等待。前者只会在全局系统环境(网络,机器故障)发生显著变化时出现,发生几率非常小;后者在正常事务逻辑中不会影响系统整体吞吐量,只是对延时有一定要求,但数量级是在毫秒级,能满足绝大多数应用的需求。
4.配置不同的时间戳长度和节点数长度,可以轻易的支持不同规模的集群。
分布式仲裁机制的引入可以消除现有软件方案中由于多事务间时间戳接近而产生的阻塞或等待(见google spanner)。该仲裁机制基于参与事务的节点选择仲裁方,没有单点性能瓶颈和单点故障。
请参见图5,为了解决相同的技术问题,本发明还提供了一种基于分布式逻辑时间戳的分布式事务管理系统,所述分布式事务的数据库包括协调节点、编目节点和数据节点,各个节点的本地逻辑时间分别根据预设的全局逻辑时间进行同步校时;
所述基于分布式逻辑时间戳的分布式事务管理系统包括:
事务时间管理模块1,用于在事务开始时,将该事务的事务开始时间设为所述协调节点的本地逻辑时间;
事务访问管理模块2,用于在所述数据节点首次接收到所述协调节点发送的消息时,判断所述数据节点的本地逻辑时间与所述协调节点的本地逻辑时间的相差值是否超出预设的第一误差阈值;若是,则将所述数据节点的本地逻辑时间进行同步校时,同时,控制所述数据节点返回错误消息至所述协调节点,以使所述协调节点回滚该事务,并将所述协调节点的本地逻辑时间进行同步校时后,重试该事务;
事务预提交管理模块3,用于在事务预提交时,将该事务的事务预提交时间设为所述协调节点的当前本地逻辑时间,判断所述事务预提交时间与所述事务开始时间的相差值是否大于该事务的事务容忍误差;若否,则暂缓执行;若是,则将所述事务预提交时间以及该事务的预提交消息发送到所有参与该事务的数据节点;
分布式仲裁模块4,用于当两个不同事务访问相同数据时,判断所述两个不同事务的时间戳的相差值是否小于预设的第二误差阈值;若是,则从目标数据节点中按预设的算法选取一个数据节点作为仲裁节点,以对所述两个不同事务的时间戳顺序进行仲裁。
进一步地,所述预设的第一误差阈值为所述全局容忍误差的两倍。
进一步地,所述第二误差阈值的设定方式为:在访问相同数据的不同事务中,找出最大的事务容忍误差,将所述第二误差阈值设定为所述最大的事务容忍误差的两倍。
进一步地,所述全局容忍误差为根据系统状况进行动态变更;所述系统还包括:
全局容忍误差记录模块,用于当所述协调节点与所述编目节点进行同步校时时,获取当前系统全局容忍误差并进行记录;
全局容忍误差更新模块,用于在事务获取事务开始时间时,将所述当前系统全局容忍误差保存至该事务的元数据控制块中。
可以理解的是上述系统项实施例,是与本发明方法项实施例相对应的,本发明实施例提供的一种基于分布式逻辑时间戳的分布式事务管理系统,可以实现本发明任意一项方法项实施例提供的基于分布式逻辑时间戳的分布式事务管理方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种基于分布式逻辑时间戳的分布式事务管理方法,其特征在于,所述分布式事务的数据库包括协调节点、编目节点和数据节点,各个节点的本地逻辑时间分别根据预设的全局逻辑时间进行同步校时;
所述基于分布式逻辑时间戳的分布式事务管理方法包括:
在事务开始时,将该事务的事务开始时间设为所述协调节点的本地逻辑时间;
在所述数据节点首次接收到所述协调节点发送的消息时,判断所述数据节点的本地逻辑时间与所述协调节点的本地逻辑时间的相差值是否超出预设的第一误差阈值;若是,则将所述数据节点的本地逻辑时间进行同步校时,同时,控制所述数据节点返回错误消息至所述协调节点,以使所述协调节点回滚该事务,并将所述协调节点的本地逻辑时间进行同步校时后,重试该事务;
在事务预提交时,将该事务的事务预提交时间设为所述协调节点的当前本地逻辑时间,判断所述事务预提交时间与所述事务开始时间的相差值是否大于该事务的事务容忍误差;若否,则暂缓执行;若是,则将所述事务预提交时间以及该事务的预提交消息发送到所有参与该事务的数据节点;
当两个不同事务访问相同数据时,判断所述两个不同事务的时间戳的相差值是否小于预设的第二误差阈值;若是,则从目标数据节点中按预设的算法选取一个数据节点作为仲裁节点,以对所述两个不同事务的时间戳顺序进行仲裁。
2.根据权利要求1所述的基于分布式逻辑时间戳的分布式事务管理方法,其特征在于,所述预设的第一误差阈值为全局容忍误差的两倍。
3.根据权利要求1所述的基于分布式逻辑时间戳的分布式事务管理方法,其特征在于,所述第二误差阈值的设定方式为:在访问相同数据的不同事务中,找出最大的事务容忍误差,将所述第二误差阈值设定为所述最大的事务容忍误差的两倍。
4.根据权利要求1所述的基于分布式逻辑时间戳的分布式事务管理方法,其特征在于,全局容忍误差为根据系统状况进行动态变更;所述方法还包括:
当所述协调节点与所述编目节点进行同步校时时,获取当前系统全局容忍误差并进行记录;
在事务获取事务开始时间时,将所述当前系统全局容忍误差保存至该事务的元数据控制块中。
5.根据权利要求1所述的基于分布式逻辑时间戳的分布式事务管理方法,其特征在于,还包括:
当事务修改、删除或插入数据时,将该事务的标识ID作为版本以对被改动的所述数据进行标记。
6.根据权利要求1所述的基于分布式逻辑时间戳的分布式事务管理方法,其特征在于,事务的标识ID由该事务的事务开始时间以及参与该事务的协调节点的节点号组成。
7.一种基于分布式逻辑时间戳的分布式事务管理系统,其特征在于,所述分布式事务的数据库包括协调节点、编目节点和数据节点,各个节点的本地逻辑时间分别根据预设的全局逻辑时间进行同步校时;
所述基于分布式逻辑时间戳的分布式事务管理系统包括:
事务时间管理模块,用于在事务开始时,将该事务的事务开始时间设为所述协调节点的本地逻辑时间;
事务访问管理模块,用于在所述数据节点首次接收到所述协调节点发送的消息时,判断所述数据节点的本地逻辑时间与所述协调节点的本地逻辑时间的相差值是否超出预设的第一误差阈值;若是,则将所述数据节点的本地逻辑时间进行同步校时,同时,控制所述数据节点返回错误消息至所述协调节点,以使所述协调节点回滚该事务,并将所述协调节点的本地逻辑时间进行同步校时后,重试该事务;
事务预提交管理模块,用于在事务预提交时,将该事务的事务预提交时间设为所述协调节点的当前本地逻辑时间,判断所述事务预提交时间与所述事务开始时间的相差值是否大于该事务的事务容忍误差;若否,则暂缓执行;若是,则将所述事务预提交时间以及该事务的预提交消息发送到所有参与该事务的数据节点;
分布式仲裁模块,用于当两个不同事务访问相同数据时,判断所述两个不同事务的时间戳的相差值是否小于预设的第二误差阈值;若是,则从目标数据节点中按预设的算法选取一个数据节点作为仲裁节点,以对所述两个不同事务的时间戳顺序进行仲裁。
8.根据权利要求7所述的基于分布式逻辑时间戳的分布式事务管理系统,其特征在于,所述预设的第一误差阈值为全局容忍误差的两倍。
9.根据权利要求7所述的基于分布式逻辑时间戳的分布式事务管理系统,其特征在于,所述第二误差阈值的设定方式为:在访问相同数据的不同事务中,找出最大的事务容忍误差,将所述第二误差阈值设定为所述最大的事务容忍误差的两倍。
10.根据权利要求7所述的基于分布式逻辑时间戳的分布式事务管理系统,其特征在于,全局容忍误差为根据系统状况进行动态变更;所述系统还包括:
全局容忍误差记录模块,用于当所述协调节点与所述编目节点进行同步校时时,获取当前系统全局容忍误差并进行记录;
全局容忍误差更新模块,用于在事务获取事务开始时间时,将所述当前系统全局容忍误差保存至该事务的元数据控制块中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA3125546A CA3125546A1 (en) | 2019-10-23 | 2020-09-11 | Distributed logical timestamp-based management method and system for distributed transaction |
PCT/CN2020/114654 WO2021077934A1 (zh) | 2019-10-23 | 2020-09-11 | 基于分布式逻辑时间戳的分布式事务管理方法及系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019110148652 | 2019-10-23 | ||
CN201911014865.2A CN110795506A (zh) | 2019-10-23 | 2019-10-23 | 基于分布式逻辑时间戳的分布式数据库管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111061810A CN111061810A (zh) | 2020-04-24 |
CN111061810B true CN111061810B (zh) | 2020-08-21 |
Family
ID=69441083
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911014865.2A Pending CN110795506A (zh) | 2019-10-23 | 2019-10-23 | 基于分布式逻辑时间戳的分布式数据库管理方法及装置 |
CN201911291498.0A Active CN111061810B (zh) | 2019-10-23 | 2019-12-13 | 基于分布式逻辑时间戳的分布式事务管理方法及系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911014865.2A Pending CN110795506A (zh) | 2019-10-23 | 2019-10-23 | 基于分布式逻辑时间戳的分布式数据库管理方法及装置 |
Country Status (3)
Country | Link |
---|---|
CN (2) | CN110795506A (zh) |
CA (1) | CA3125546A1 (zh) |
WO (1) | WO2021077934A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795506A (zh) * | 2019-10-23 | 2020-02-14 | 广州巨杉软件开发有限公司 | 基于分布式逻辑时间戳的分布式数据库管理方法及装置 |
CN111708796A (zh) * | 2020-06-23 | 2020-09-25 | 浪潮云信息技术股份公司 | 一种基于时间戳的数据一致性方法 |
CN113934737A (zh) * | 2020-06-29 | 2022-01-14 | 华为技术有限公司 | 一种数据库系统、管理事务的方法及装置 |
CN112182103A (zh) * | 2020-09-24 | 2021-01-05 | 广州巨杉软件开发有限公司 | 一种分布式数据库及其实现跨节点事务强一致性的方法 |
CN114764405B (zh) * | 2020-12-31 | 2024-04-26 | 正链科技(深圳)有限公司 | 一种分布式应用程序的事务数据一致性存储方法 |
CN113238892B (zh) * | 2021-05-10 | 2022-01-04 | 深圳巨杉数据库软件有限公司 | 一种分布式系统全局一致性的时间点恢复方法及装置 |
CN113741942B (zh) * | 2021-09-18 | 2024-10-11 | 中国银行股份有限公司 | 分布式系统跨节点交易参数版本一致性处理方法及装置 |
CN114095086B (zh) * | 2021-11-13 | 2023-05-19 | 南京智汇电力技术有限公司 | 一种适用于光纤通信的区域对时方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753609A (zh) * | 2008-12-15 | 2010-06-23 | 中国移动通信集团公司 | 分布式系统版本控制方法、节点及系统 |
CN103914452A (zh) * | 2012-12-30 | 2014-07-09 | 航天信息股份有限公司 | 一种分布式文件系统中时间差错校正方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8356007B2 (en) * | 2010-10-20 | 2013-01-15 | Microsoft Corporation | Distributed transaction management for database systems with multiversioning |
CN108401454B (zh) * | 2017-06-30 | 2021-10-22 | 深圳市大疆创新科技有限公司 | 事务调度方法、处理器、分布式系统和无人机 |
CN110209726B (zh) * | 2018-02-12 | 2023-10-20 | 金篆信科有限责任公司 | 分布式数据库集群系统、数据同步方法及存储介质 |
CN108984277B (zh) * | 2018-04-02 | 2019-08-30 | 北京百度网讯科技有限公司 | 基于gps原子钟的分布式数据库事务处理方法及装置 |
CN110795506A (zh) * | 2019-10-23 | 2020-02-14 | 广州巨杉软件开发有限公司 | 基于分布式逻辑时间戳的分布式数据库管理方法及装置 |
-
2019
- 2019-10-23 CN CN201911014865.2A patent/CN110795506A/zh active Pending
- 2019-12-13 CN CN201911291498.0A patent/CN111061810B/zh active Active
-
2020
- 2020-09-11 CA CA3125546A patent/CA3125546A1/en not_active Abandoned
- 2020-09-11 WO PCT/CN2020/114654 patent/WO2021077934A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753609A (zh) * | 2008-12-15 | 2010-06-23 | 中国移动通信集团公司 | 分布式系统版本控制方法、节点及系统 |
CN103914452A (zh) * | 2012-12-30 | 2014-07-09 | 航天信息股份有限公司 | 一种分布式文件系统中时间差错校正方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111061810A (zh) | 2020-04-24 |
CA3125546A1 (en) | 2021-04-29 |
WO2021077934A1 (zh) | 2021-04-29 |
CN110795506A (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061810B (zh) | 基于分布式逻辑时间戳的分布式事务管理方法及系统 | |
US12061625B2 (en) | Pipelining Paxos state machines | |
CN110196760B (zh) | 分布式事务一致性实现方法及装置 | |
US6078930A (en) | Multi-node fault-tolerant timestamp generation | |
CN108121782B (zh) | 查询请求的分配方法、数据库中间件系统以及电子设备 | |
US8301600B1 (en) | Failover recovery in a distributed data store | |
US7076508B2 (en) | Method, system, and program for merging log entries from multiple recovery log files | |
US10936545B1 (en) | Automatic detection and backup of primary database instance in database cluster | |
CN111190935B (zh) | 数据读取方法、装置、计算机设备及存储介质 | |
US20050033947A1 (en) | Multiprocessor system with interactive synchronization of local clocks | |
US11436218B2 (en) | Transaction processing for a database distributed across availability zones | |
WO2022170938A1 (en) | Distributed database remote backup | |
CN101136728A (zh) | 群集系统和用于备份群集系统中的副本的方法 | |
US20170168756A1 (en) | Storage transactions | |
CN113987064A (zh) | 数据处理方法、系统及设备 | |
WO2022111188A1 (zh) | 事务处理方法、系统、装置、设备、存储介质及程序产品 | |
US20200293412A1 (en) | Log Management Method, Server, and Database System | |
CN111552701A (zh) | 确定分布式集群中数据一致性的方法及分布式数据系统 | |
WO2022002044A1 (zh) | 分布式数据库的处理方法及装置、网络设备和计算机可读存储介质 | |
Demirbas et al. | Beyond truetime: Using augmentedtime for improving spanner | |
US11687533B2 (en) | Centralized storage for search servers | |
CN112417043B (zh) | 数据处理系统及方法 | |
CN113253924B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN114265900A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
Helt et al. | C5: cloned concurrency control that always keeps up |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right | ||
PP01 | Preservation of patent right |
Effective date of registration: 20240904 Granted publication date: 20200821 |