一种跨数据中心的事务处理方法、装置以及设备制造方法及图纸

技术编号:35029834 阅读:22 留言:0更新日期:2022-09-24 23:03
本说明书实施例公开了跨数据中心的事务处理方法、装置以及设备。应用于由多个数据中心构成的分布式系统,方案包括:第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;协调者节点,确定子事务对应的数据中心,作为第二数据中心,若第二数据中心不为第一数据中心,则在第二数据中心内确定代理协调者节点,将子事务发送给代理协调者节点;代理协调者节点,确定子事务涉及的数据分片的副本在第二数据中心内所在的数据节点,通过对数据节点进行远程直接内存访问,执行子事务,根据执行结果响应协调者节点;所述协调者节点,根据各代理协调者节点的响应,继续处理事务请求。务请求。务请求。

【技术实现步骤摘要】
一种跨数据中心的事务处理方法、装置以及设备


[0001]本说明书涉及数据库
,尤其涉及一种跨数据中心的事务处理方法、装置以及设备。

技术介绍

[0002]目前,随着集群规模的不断扩大,分布式数据库系统的高可用性也是工业界及学术界所面临的重点及难点问题。通常来说,分布式系统通过冗余将每个数据分片存储多份,分别存储在不同的节点上,当一些节点发生故障时,可由存储相同数据分片的节点来代替该故障节点继续提供对外访问,防止数据丢失或系统长时间无法正常提供服务。而对于机房整体断电、城市供电系统瘫痪等会导致整个数据中心集体故障的情况,则需要在跨机房或跨城市的其他数据中心内为数据分片设置备份节点,来实现异地容灾。
[0003]为数据分片提供冗余副本可以提升系统的可用性,但同样也会对系统带来额外开销,例如硬件成本、性能及一致性问题。而在跨数据中心的分布式系统当中,网络因素尤其是跨数据中心网络,通常是影响分布式事务执行及副本同步性能的主要问题。
[0004]基于此,针对跨数据中心的场景,需要更为高效可靠的分布式事务处理方案。

技术实现思路

[0005]本说明书一个或多个实施例提供一种跨数据中心的事务处理方法、装置、设备以及存储介质,用以解决如下技术问题:针对跨数据中心的场景,需要更为高效可靠的分布式事务处理方案。
[0006]为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
[0007]本说明书一个或多个实施例提供的一种跨数据中心的事务处理方法,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片在两个以上的所述数据中心内分别具有副本,所述方法包括:
[0008]第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
[0009]所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
[0010]所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
[0011]所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
[0012]本说明书一个或多个实施例提供的一种跨数据中心的事务处理装置,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片在两个以上的所述数据中心内分别具有副本,所述装置包括:
[0013]处于第一数据中心内的协调者节点的请求解析模块,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
[0014]所述协调者节点的事务发送模块,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
[0015]处于所述第二数据中心内的所述代理协调者节点的事务执行模块,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
[0016]所述协调者节点的响应处理模块,根据各所述代理协调者节点的响应,继续处理所述事务请求。
[0017]本说明书一个或多个实施例提供的一种跨数据中心的事务处理设备,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片在两个以上的所述数据中心内分别具有副本,所述设备包括:
[0018]至少一个处理器;以及,
[0019]与所述至少一个处理器通信连接的存储器;其中,
[0020]所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
[0021]第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
[0022]所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
[0023]所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
[0024]所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
[0025]本说明书一个或多个实施例提供的一种非易失性计算机存储介质,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片在两个以上的所述数据中心内分别具有副本,所述介质存储有计算机可执行指令,所述计算机可执行指令设置为:
[0026]第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
[0027]所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
[0028]所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
[0029]所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
[0030]本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:在分布式系统的各数据中心内搭建了远程内存直接访问网络,提升了数据中心内数据读写及各副本间通信的效率,而对于数据中心与数据中心之间,通过协调者节点与代理协调者节点,将目前为了执行分布式事务需要进行的大量跨数据中心TCP/IP通信(或者其他一些跨域通信),转化为代理协调者节点所在的数据中心内的远程内存直接访问请求,从而提高了分布式事务的处理效率,又保证了跨数据中心的数据一致性,可靠性较好,不仅如此,还避免了将远程内存直接访问网络不合理地扩大化,有效制约了成本的提升。
附图说明
[0031]为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。...

【技术保护点】

【技术特征摘要】
1.一种跨数据中心的事务处理方法,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片在两个以上的所述数据中心内分别具有副本,所述方法包括:第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。2.如权利要求1所述的方法,所述子事务包括读写集;所述代理协调者节点,执行所述子事务,具体包括:所述代理协调者节点,在所述子事务的读写阶段,根据所述读写集,对所述涉及的数据分片的副本执行相应的读写操作;所述协调者节点,继续处理所述事务请求,具体包括:所述协调者节点,根据所述代理协调者节点的响应,若确定所述读写阶段成功完成且所述子事务具有验证阶段,则向所述代理协调者节点发送验证请求,以使所述子事务进入所述验证阶段,以用于验证事务之间的顺序是否正确。3.如权利要求2所述的方法,所述根据各所述代理协调者节点的响应,继续处理所述事务请求,具体包括:根据各所述代理协调者节点反馈的对所述子事务一个或者多个阶段的处理结果,判断将所述事务请求对应的事务提交还是回滚。4.如权利要求1所述的方法,每个数据分片具有的多个副本中包含一个主副本,其余的为从副本;所述解析客户端发送的事务请求,具体包括:确定所述客户端发送的事务请求对应的事务涉及的各数据分片;确定所述各数据分片的主副本分别所在的数据中心;针对所述各数据分片,将主副本在同一个数据中心的数据分片构成的集合,在所述事务中对应的部分确定为一个子事务,该数据中心作为该子事务对应的数据中心。5.如权利要求4所述的方法,每个数据分片具有两个以上的从副本,在所述主副本所在的数据中心内和其他至少一个数据中心内分别具有一个所述从副本,同一个数据分片在同一个数据中心内的主副本与从副本在不同的节点上。6.如权利要求1所述的方法,所述得到一个或者多个分别对应于一个数据中心的子事务之后,所述方法还包括:所述协调者节点,若所述第二数据中心即为所述第一数据中心,则确定所述子事务涉及的数据分片的副本在所述第一数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务。
7.如权利要求1所述的方法,所述若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点,具体包括:判断是否存在多个所述子事务对应于同一个所述第二数据中心;若是,且该第二数据中心不为所述第一数据中心,则将所述多个所述子事务打包,得子事务包,并统一地通过一轮通信,将所述子事务包发送给所述代理协调者节点。8.如权利要求7所述的方法,所述数据中心内搭建有远程直接内存访问网络,以用于执行所述子事务;所述将所述子事务包发送给所述代理协调者节点之后,所述方法还包括:所述代理协调者节点,触发所述子事务包通过所述远程直接内存访问网络,在所述第二数据中心内的节点间进行随机游走;对于当前游走达到的节点,判断该节点是否能够支持执行所述子事务包中的至少部分事务,若是,则执行所述至少部分事务并对所述子事务包进行相应修改,之后继续游走,直至所述子事务包执行完毕。9.如权利要求8所述的方法,所述触发所述子事务包通过所述远程直接内存访问网络,在所述第二数据中心内的节点间进行随机游走之前,所述方法还包括:确定所述子事务包内包含的子事务数量大于设定阈值;和/或,确定所述代理协调者节点接收所述协调者节点发送的子事务包的频次大于设定阈值。10.如权利要求1~9任一项所述的方法,不处于同一个所述数据中心的所述协调者节点与所述代理协调者节点,通过TCP/IP进行通信。11.一种跨数据中心的事务处理装置,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片在两个以上的所述数据中心内分别具有副本,所述装置包括:处于第一数据中心内的协调者节点的请求解析模块,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;所述协调者节点的事务发送模块,确定所述子事务对应的数据中心,作为第二数...

【专利技术属性】
技术研发人员:杜小勇徐泉清陈晋川肖金亮张倩韩富晟李婧瑶杨传辉钟家佳
申请(专利权)人:中国人民大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1