CN115103011A - 一种跨数据中心的业务处理方法、装置以及设备 - Google Patents

一种跨数据中心的业务处理方法、装置以及设备 Download PDF

Info

Publication number
CN115103011A
CN115103011A CN202210724076.3A CN202210724076A CN115103011A CN 115103011 A CN115103011 A CN 115103011A CN 202210724076 A CN202210724076 A CN 202210724076A CN 115103011 A CN115103011 A CN 115103011A
Authority
CN
China
Prior art keywords
data
coordinator node
transaction
data center
sub
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.)
Granted
Application number
CN202210724076.3A
Other languages
English (en)
Other versions
CN115103011B (zh
Inventor
徐泉清
杜小勇
肖金亮
陈晋川
韩富晟
张倩
杨传辉
杨皖晴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renmin University of China
Beijing Oceanbase Technology Co Ltd
Original Assignee
Renmin University of China
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renmin University of China, Beijing Oceanbase Technology Co Ltd filed Critical Renmin University of China
Priority to CN202210724076.3A priority Critical patent/CN115103011B/zh
Publication of CN115103011A publication Critical patent/CN115103011A/zh
Application granted granted Critical
Publication of CN115103011B publication Critical patent/CN115103011B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/166IP fragmentation; TCP segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例公开了跨数据中心的业务处理方法、装置以及设备。包括:第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到分别对应于数据中心的子事务,确定子事务涉及的数据分片,以及确定其主副本所在的数据中心,作为第二数据中心,在第二数据中心内确定代理协调者节点,将子事务发送给代理协调者节点,以便其通过远程直接内存访问处理子事务;若协调者节点不可用,则确定协调者节点上是否有数据分片的主副本,若是,则选择数据分片的一个从副本,作为主副本,并回滚涉及数据分片的未完成事务;在子事务发送给代理协调者节点之后,代理协调者节点,若与协调者节点之间涉及子事务的通信失败,则回滚未完成的子事务。

Description

一种跨数据中心的业务处理方法、装置以及设备
技术领域
本说明书涉及数据库技术领域,尤其涉及一种跨数据中心的业务处理方法、装置以及设备。
背景技术
目前,随着集群规模的不断扩大,分布式数据库系统的高可用性也是工业界及学术界所面临的重点及难点问题。通常来说,分布式系统通过冗余将每个数据分片存储多份,分别存储在不同的节点上,当一些节点发生故障时,可由存储相同数据分片的节点来代替该故障节点继续提供对外访问,防止数据丢失或系统长时间无法正常提供服务。而对于机房整体断电、城市供电系统瘫痪等会导致整个数据中心集体故障的情况,则需要在跨机房或跨城市的其他数据中心内为数据分片设置备份节点,来实现异地容灾。
为数据分片提供冗余副本可以提升系统的可用性,但同样也会对系统带来额外开销,例如硬件成本、性能及一致性问题。而在跨数据中心的分布式系统当中,网络因素尤其是跨数据中心网络,通常是影响分布式事务执行及容灾性能的主要问题。
基于此,针对跨数据中心的场景,需要更为高效可靠的业务处理方案。
发明内容
本说明书一个或多个实施例提供一种跨数据中心的业务处理方法、装置、设备以及存储介质,用以解决如下技术问题:针对跨数据中心的场景,需要更为高效可靠的业务处理方案。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
本说明书一个或多个实施例提供的一种跨数据中心的业务处理方法,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述方法包括:
第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点,确定所述子事务涉及的数据分片,以及确定该数据分片的主副本所在的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点,以便在所述第二数据中心内,通过远程直接内存访问处理所述子事务;
若所述协调者节点不可用,则确定所述协调者节点上是否有数据分片的主副本,若是,则选择所述数据分片的一个从副本,作为主副本,并回滚涉及所述数据分片的未完成事务;
在所述子事务发送给所述代理协调者节点之后,所述代理协调者节点,若与所述协调者节点之间涉及所述子事务的通信失败,则回滚未完成的所述子事务。
本说明书一个或多个实施例提供的一种跨数据中心的业务处理装置,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述装置包括:
处于第一数据中心内的协调者节点的请求解析模块,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点的事务发送模块,确定所述子事务涉及的数据分片,以及确定该数据分片的主副本所在的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点,以便在所述第二数据中心内,通过远程直接内存访问处理所述子事务;
第一不可用处理模块,若所述协调者节点不可用,则确定所述协调者节点上是否有数据分片的主副本,若是,则选择所述数据分片的一个从副本,作为主副本,并回滚涉及所述数据分片的未完成事务;
所述代理协调者节点的通信失败处理模块,在所述子事务发送给所述代理协调者节点之后,若与所述协调者节点之间涉及所述子事务的通信失败,则回滚未完成的所述子事务。
本说明书一个或多个实施例提供的一种跨数据中心的业务处理设备,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
本说明书一个或多个实施例提供的一种非易失性计算机存储介质,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述介质存储有计算机可执行指令,所述计算机可执行指令设置为:
第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:在分布式系统的各数据中心内搭建了远程内存直接访问网络,提升了数据中心内数据读写及各副本间通信的效率,而对于数据中心与数据中心之间,通过协调者节点与代理协调者节点,将目前为了执行分布式事务需要进行的大量跨数据中心TCP/IP通信(或者其他一些跨域通信),转化为代理协调者节点所在的数据中心内的远程内存直接访问请求,从而提高了分布式事务的处理效率,又保证了跨数据中心的数据一致性,可靠性较好,不仅如此,还避免了将远程内存直接访问网络不合理地扩大化,有效制约了成本的提升,在此基础上,在数据中心内以及跨数据中心为每个数据分片部署了多个副本,让主副本所在数据中心中也具有从副本,从而,无论在协调者节点或者代理协调者节点或者其他的数据节点不可用(比如,宕机或者重启等)时,都能够基于远程直接内存网络,快速切换节点角色、切换副本以及回滚事务,以保障事务能够迅速可靠地恢复正常执行,保证了分布式系统的高可用性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一种跨数据中心的数据分片副本及网络部署示意图;
图2为本说明书一个或多个实施例提供的一种跨数据中心的业务处理方法的流程示意图;
图3为本说明书一个或多个实施例提供的一种实际应用场景下,协调者节点宕机处理的流程示意图;
图4为本说明书一个或多个实施例提供的一种实际应用场景下,代理协调者节点宕机处理的流程示意图;
图5为本说明书一个或多个实施例提供的一种实际应用场景下,其他的数据节点宕机处理的流程示意图;
图6为本说明书一个或多个实施例提供的一种跨数据中心的业务处理装置的结构示意图;
图7为本说明书一个或多个实施例提供的一种跨数据中心的业务处理设备的结构示意图。
具体实施方式
本说明书实施例提供一种跨数据中心的业务处理方法、装置、设备以及存储介质。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在本说明书一个或多个实施例中,通过数据分片分散部署的策略,将海量数据搭建在成本较低的PC服务器上,在提供数据库可扩展性的同时,避免了传统数据库对高性能服务器的依赖,大大降低了搭建数据库集群的硬件成本。进一步地,采用远程直接内存访问(Remote Direct Memory Access,RDMA)技术,其相对传统网络来说,具有高带宽和低时延的特点,将RDMA网络搭建在数据中心内,大大提升了同一个数据中心内的网络访问效率。
但是,由于RDMA技术对网络规模及底层硬件的严苛要求,在目前阶段,并不适用于跨机房或跨城域使用,也难以用于跨数据中心数据访问。因此,本申请针对跨数据中心的分布式系统,在同数据中心内搭建RDMA网络,将分布式事务的读写验证及副本同步所需的跨数据中心通信(主要包括TCP/IP通信),尽可能地转变为同数据中心内的RDMA访问,从而最大化地利用RDMA的网络优势,来提升分布式系统中事务执行的整体性能。
在此基础上,为了充分利用RDMA的网络优势来提高分布式系统的高可用性,还对于数据分片的副本部署进行了一定的设计,能够为系统中各类节点不可用场景提供较好的跨数据中心容灾能力。在该设计中,分布式系统由多个数据中心构成,每个数据中心内包含多个节点,每个节点包含一台或者多台机器,数据中心内的数据可以分片存储,每个数据分片具有分布在多个数据中心上的多个副本(同一个数据分片有多个一模一样的,其中的每个叫做一个副本),其中包括至少一个主副本和至少一个从副本,优先使用主副本,为了兼顾跨数据中心容灾能力和数据中心内容灾效率。
优选地,每个数据分片优选地具有一个主副本和至少两个从副本,主副本和至少一个从副本在同一个数据中心内的不同节点上,从而,当主副本所在节点不可用时,可更高效地通过数据中心内的RDMA网络,完成主备副本的切换,并代替原来的主副本所在节点对外提供访问服务,另外,还有至少一个从副本在其他的数据中心内,当主副本所在的整个数据中心停电或发生大规模故障时,可提供跨数据中心的异地容灾能力,进一步提升系统的高可用性。更直观地,参见图1。
参见图1。图1为本说明书一个或多个实施例提供的一种跨数据中心的数据分片副本及网络部署示意图。
在图1中,示出了分布式系统包含的其中两个数据中心,称为第一数据中心和第二数据中心,第一数据中心内包含节点1和节点2,第二数据中心内包含节点3和节点4。示出了数据分片A、B、C、D,其中,A在节点1、2、4上分别具有一个副本,B在节点1、2、3上分别具有一个副本,C在节点1、3、4上分别具有一个副本,D在节点2、3、4上分别具有一个副本。以A为例,节点1上A的副本比如作为主副本,则节点2、4上A的副本均为从副本,在节点1异常导致A的主副本不可用时,能够在第一数据中心内快速切换至节点2上的从副本,而且即使整个第一数据中心异常,仍然还能切换至第二数据中心内节点4上的从副本。
同一个数据中心内采用RDMA通信,在不同的数据中心之间进行跨数据中心通信比如采用TCP/IP通信。比如,同一个数据分片的不同副本之间进行同步,以A为例,节点1、2上A的副本之间同步时,由于均处于第一数据中心内,因此采用RDMA通信,节点1、4上A的副本之间同步时,由于分别处于第一数据中心、第二数据中心内,因此采用TCP/IP通信,B等其他数据分片也是类似的,不再赘述。
基于上面的部署思路,继续对分布式事务的执行和节点不可用情况下的处理进行详细说明。
图2为本说明书一个或多个实施例提供的一种跨数据中心的业务处理方法的流程示意图。该方法可以应用于不同的业务领域中,这些业务领域比如包括:电子支付业务领域、电商业务领域、即时通讯业务领域、游戏业务领域、公务业务领域等。该流程可以在分布式系统中的机器上执行,典型的如分布式数据库服务器、云计算设备等,流程中的某些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。
图2中的流程可以包括以下步骤:
S202:第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务。
该流程由多个数据中心中的任意两个数据中心相互配合而执行。为了便于描述,将这两个数据中心,当前接收到事务请求的那个数据中心称为第一数据中心。
在本说明书一个或多个实施例中,当需要操作数据库时,客户端向对应的分布式系统发送相应的事务请求,将分布式系统中具体接收到该事务请求的节点作为协调者节点,那么,在这种情况下,各数据中心内都是存在协调者节点的,且具体哪些节点是协调者节点是可以动态变化的。对于需要跨数据中心处理的分布式事务,由协调者节点来进行跨数据中心通信,以指示另一个数据中心执行属于该数据中心的事务部分。
这里的事务指的是由一组访问或修改数据项的数据库操作所构成的序列。当这组操作需要访问或者参与计算的节点不全分布在同一台机器上(跨数据中心属于这种情况)时,该事务是一个分布式事务,反之则为单机事务。与单机事务一样,分布式事务需要满足原子性、一致性、隔离性和持久性。
事务请求用于请求执行涉及一个或者多个数据分片的事务,事务所包含的操作序列即是针对这些数据分片执行的。前面已经提到,同一个数据分片具有多个副本,则具体针对其中任一个副本执行对应的操作即可,其他副本则根据该副本进行同步以保持数据一致,在区分主从副本的场景下,优先针对主副本执行对应的操作。
在本说明书一个或多个实施例中,由于事务请求对应的事务可能涉及多个数据分片,而这些数据分片可能属于不同的数据中心,据此将该事务划分为多个子事务,每个子事务分别有自己对应的数据中心,该子事务需要操作的数据即包含在其对应的数据中心内。如此,便于协调者节点接下来更精准以及尽量少地,基于子事务进行跨数据中心通信。
子事务划分的粒度还可以更细,比如,将对应于同一个数据中心的子事务进一步按照涉及的不同数据分片划分,则最终得到的每个子事务对应于一个数据中心内的一个数据分片。
基于主副本来确定子事务及其与数据中心的对应关系。具体比如,在解析客户端发送的事务请求的过程中,确定客户端发送的事务请求对应的事务涉及的各数据分片,确定各数据分片的主副本分别所在的数据中心,针对各数据分片,将主副本在同一个数据中心的数据分片构成的集合,在事务中对应的部分确定为一个子事务,该数据中心作为该子事务对应的数据中心。
S204:所述协调者节点,确定所述子事务涉及的数据分片,以及确定该数据分片的主副本所在的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点,以便在所述第二数据中心内,通过远程直接内存访问处理所述子事务。
通过S202可能得到多个子事务,有的子事务对应于第一数据中心以外的其他数据中心,S204和S206即是针对这部分子事务的,这是第一种情况。
当然,同时还可能有另一部分子事务对应于第一数据中心,在这第二种情况下,第二数据中心即为第一数据中心,则无需跨数据中心通信,直接由协调者节点,确定该另一部分子事务涉及的数据分片的主副本在第一数据中心内所在的数据节点,然后,在第一数据中心内,通过对该数据节点进行远程直接内存访问,执行子事务。
相比较而言,本申请更关注需要跨数据中心通信的第一种情况。下面的一些实施例主要针对第一种情况继续说明。
在每个数据中心内,可以有少量(比如,1个)节点作为代理协调者节点,用于代表本数据中心内的节点来响应来自其他数据中心的协调者节点,从而,能够将跨数据中心通信,尽量集中在属于不同数据中心的协调者节点与代理协调者节点之间,其他的节点仅在自己所属的数据中心内,通过更高效的RDMA通信即可。而原本在没有协调者和代理协调者节点的情况下,则需要跨数据中心,分别地与对面需访问的各数据分别所在的节点建立TCP/IP连接,这大量的跨数据中心TCP/IP连接,正是目前的分布式系统的性能瓶颈所在。
在本说明书一个或多个实施例中,可以固定地预先指定一个节点作为代理协调者节点,提供给协调者节点直接与之通信。或者,也可以由协调者节点根据当前的子事务的实际情况,动态地选择代理协调者节点,比如,将包含当前的子事务涉及的主副本最多的节点,选择为本次的代理协调者节点(则相应的很多数据访问在代理协调者节点自身上进行即可),如此,进一步减少了第二数据中心内的节点间通信。
需要说明的是,前面大多是以TCP/IP通信示例性地作为跨数据中心的通信方式的,当然,采用其他一些方式也是可以的,比如,UDP通信方式等,所采用的这些可选的通信方式的效率要低于RDMA通信。
在本说明书一个或多个实施例中,代理协调者节点,确定接收到的子事务涉及的数据分片的主副本在第二数据中心内所在的数据节点,通过对该数据节点进行远程直接内存访问,执行该子事务,根据执行结果响应协调者节点。
在本说明书一个或多个实施例中,第二数据中心内预先构建有RDMA通信,以用于第二数据中心内的节点之间的数据库操作,包括数据读写、副本间同步等。
RDMA可以将需要传输的资料从一台计算机的内存直接复制到对端内存当中,减少远程CPU的开销,与传统的TCP/IP网络相比,RDMA网络具有高带宽、低时延的特点。同时,RDMA具有零拷贝及内核绕过两个特点:零拷贝是指RDMA不需要在用户空间及内核空间中来回复制数据;内核绕过是指IO可以在用户层准备数据并通知网卡发送与接收,而无须通过内核,减少了系统的调用及上下文切换的开销。
针对本方案的场景,RDMA网络可以减少CPU在网络通信时的参与,节省的CPU开销可用于事务执行,提升系统事务执行的效率。
在本说明书一个或多个实施例中,若第一数据中心也具有对应的子事务,则可以由协调者节点自己执行这部分子事务,根据执行结果以及各代理协调者节点的响应,来综合地决策事务请求对应的事务整体如何继续处理,是直接提交以使事务真正地落地生效,还是由于出现异常需要将事务进行回滚,还是需要对事务进一步地验证,等等。
子事务执行过程至少包括子事务的读写阶段,为了保证事务之间的顺序正确,在读写阶段之后,还可能有可选的验证阶段。协调者节点可以通过与代理协调者节点的两轮跨数据中心通信,分别完成这指示两个阶段的执行。
S206:若所述协调者节点不可用,则确定所述协调者节点上是否有数据分片的主副本,若是,则选择所述数据分片的一个从副本,作为主副本,并回滚涉及所述数据分片的未完成事务。
在本说明书一个或多个实施例中,协调者节点自身上也可能存储有数据分片的主副本,那么在协调者节点不可用(一般为不可用导致)的情况下,需要为这些主副本选择对应的从副本,将所选择的从副本暂时作为主副本使用(即,进行主从副本切换)。为了提高主从副本切换效率,优先在第一数据中心内选择该数据分片的一个从副本,作为主副本,则无需跨数据中心切换。
对于事务请求对应的事务,由于当前是由协调者节点统管,若该事务还在读写或者验证阶段,而未提交,则可以回滚该事务。为了尽量降低对事务影响,可以以更小的粒度来回滚事务,而暂时不无脑地将整个事务都回滚,因为代理协调者节点有可能通过不依赖于协调者节点的其他方式,继续完成从协调者节点获得的子事务,那么这部分子事务未必需要回滚。比如,可以确定协调者节点上是否有对应于该事务请求的数据分片的主副本,若是,则选择该数据分片的一个从副本,作为主副本,并回滚涉及数据分片的未完成事务(即为上述的一部分子事务)。需要说明的是,若事务已经进入提交阶段,则可以直接提交,而无需回滚。
进一步地,若协调者节点不可用,则代理协调者节点与协调者节点之间涉及子事务的某些必要的通信可能失败,在这种情况下,代理协调者节点也可以回滚其未完成的子事务。举例对必要的通信进行说明:以读写阶段为例,在一种应用场景下,代理协调者节点接收到协调者节点发送的子事务后,会返回一条Ack消息表示子事务已收到,这属于必要的通信,而协调者节点不可用可能导致该Ack消息发送失败;以读写阶段为例,在一种应用场景下,协调者节点会发送一条PrepareMsg消息,指示代理协调者节点进行子事务验证,这属于必要的通信,而协调者节点不可用可能导致代理协调者节点无法接收到该PrepareMsg消息。
对于协调者节点,其分配子事务后,后续还要接收代理协调者节点的响应。因此,若协调者节点不可用,则需要有其他节点代替协调者节点来接收该响应,那么,为了便于该代替过程高效遍历地完成,优先地在第一数据中心内选择代替的节点,进一步地,前面提到,有部分子事务可能在协调者节点上执行,该执行过程无需节点间通信,效率较高,因此,在选择代替的节点时,考虑选择能够尽多承担该部分子事务的节点。
基于这样的思路,具体比如,若协调者节点不可用,则针对协调者节点上的所有主副本,在第一数据中心重新选择替代的主副本,确定第一数据中心内上述的事务请求涉及主副本最多的节点,将该节点重新确定为协调者节点,以继续处理该事务请求对应的事务。另外,若代理协调者节点,先于第一数据中心就察觉到协调者节点异常,则可以申请自己代替其成为新的协调者节点,并通知第一数据中心,以便其他代理协调者节点的响应能正确地到达该新的协调者节点。
通过图2的方法,在分布式系统的各数据中心内搭建了远程内存直接访问网络,提升了数据中心内数据读写及各副本间通信的效率,而对于数据中心与数据中心之间,通过协调者节点与代理协调者节点,将目前为了执行分布式事务需要进行的大量跨数据中心TCP/IP通信(或者其他一些跨域通信),转化为代理协调者节点所在的数据中心内的远程内存直接访问请求,从而提高了分布式事务的处理效率,又保证了跨数据中心的数据一致性,可靠性较好,不仅如此,还避免了将远程内存直接访问网络不合理地扩大化,有效制约了成本的提升,在此基础上,在数据中心内以及跨数据中心为每个数据分片部署了多个副本,让主副本所在数据中心中也具有从副本,从而,无论在协调者节点或者代理协调者节点或者其他的数据节点不可用时,都能够基于远程直接内存网络,快速切换节点角色、切换副本以及回滚事务,以保障事务能够迅速可靠地恢复正常执行,保证了分布式系统的高可用性。
基于图2的方法,本说明书还提供了该方法的一些具体实施方案和扩展方案,下面继续进行说明。
将分布式系统中存储有可供访问的数据分片的节点称为数据节点,则分布式系统中至少包括三种节点:协调者节点、代理协调者节点、其他的数据节点,其中,协调者节点和代理协调者节点自身也可以是数据节点。前面提到了协调者节点不可用,而另两种节点同样也可能会不可用,下面也提供了相应的处理方案。
在本说明书一个或多个实施例中,若代理协调者节点不可用,则确定代理协调者节点上是否有数据分片的主副本,若是,优先在第二数据中心内选择该数据分片的一个从副本,作为主副本。
为了代理协调者节点接收的子事务能够执行,可以由协调者节点在与代理协调者节点之间涉及子事务的通信失败之后,在第二数据中心内,重新选择一个节点(比如,新选择的主副本所在的节点),作为代理协调者节点,并重新与其进行相应的通信,以使其执行子事务。或者,由第二数据中心内部自行选举出一个新的代理协调者节点,在这种情况下,可以将选举结果通知协调者节点,从而能减轻协调者节点的负担。
在本说明书一个或多个实施例中,若第一数据中心内的其他的数据节点不可用,则优先在第一数据中心内选择该数据分片的一个从副本(若没有再考虑其他的数据中心),作为主副本,则协调者节点可以在第一数据中心内切换至重新选择出的主副本,执行子事务,而无需跨数据中心交给代理协调者节点执行。
类似地,若其他的数据中心内的数据节点(假定不为代理协调者节点)不可用,则也优先在该其他的数据中心内切换该数据节点的主副本。
上面对多种不可用情况对应的处理过程进行了说明,这些过程中都涉及了主从副本的切换,一般而言,各从副本都是以主副本的数据为准进行同步的,那么在不可用引起主副本切换时,尤其需要注意剩余的各副本之间的数据一致性,可以及时将选择作为新的主副本的从副本与数据分片其他的从副本进行日志同步,若有不可用机器上的主副本的日志,则可以根据该日志在新的主副本上恢复数据,以使得日志同步结果更为可靠。
在本说明书一个或多个实施例中,虽然设置了代理协调者节点,但是,由于通过代理协调者节点收窄了数据中心之间的通信渠道,因此,在协调者节点发送过来的子事务量大的情况下,代理协调者节点的负担会加重,尤其在动态代理协调者节点的情况下,可能会将一个能力普通的节点作为动态代理协调者节点,那么会对这个节点上的正常业务造成不利影响。
针对上一段的问题,本申请进一步提供了解决思路,包括:尽量减少代理协调者节点在第二数据中心内为各子事务进一步寻址目标节点(子事务对应的主副本所在的节点)的负担,让代理协调者节点配合第二数据中心内尽量少的目标节点,将大量子事务快速且相对均匀地流入整个第二数据中心内,然后由第二数据中心内的至少大部分节点基于中心内的RDMA网络,自适应分散地处理子事务流,之后,代理协调者节点回收中心内的处理结果即可。
具体比如,若第二数据中心不为第一数据中心,则协调者节点判断是否存在多个子事务对应于同一个第二数据中心(若按照数据分片来划分子事务则可能出现这种情况),若是,且该第二数据中心不为第一数据中心,则将这多个子事务打包,得子事务包,并统一地通过一轮通信(则针对一个事务请求,向同一个第二数据中心只发送一次子事务),将子事务包发送给代理协调者节点,如此,避免了多个子事务导致相应的多轮通信。不仅如此,将子事务包发送给代理协调者节点之后,代理协调者节点,触发子事务包通过RDMA网络,在第二数据中心内的节点间进行随机游走,进行子事务的自适应处理,而无需分别正确访问包中的各子事务对应的目标节点。在随机游走的过程中,对于当前游走达到的节点,判断该节点是否能够支持执行所述子事务包中的至少部分事务,若是,则执行所述至少部分事务并对所述子事务包进行相应修改,之后继续游走,直至所述子事务包执行完毕。
对于当前游走达到的节点,可以由当前节点或者上一个节点,判断当前节点是否能够支持执行子事务包中的至少部分事务(即,是否具有部分对应的主副本),若是,则执行至少部分事务并对子事务包进行相应修改(比如,标记子事务是否执行、或者剔除已执行的子事务等),之后继续游走,直至子事务包执行完毕,在随机游走的过程中,无需代理协调者节点干预或者进行访问,等待节点反馈即可,从而有效地降低了代理协调者节点的负担,而且又更充分地利用了第二数据中心内的RDMA网络的能力。
进一步地,在上两段的方案中,若同一个第二数据中心内同时随机游走的子事务包的数量越多,则自适应的处理效率可能相对越高,无效游走(指游走到的节点不具有相应的主副本)的比例也会下降。基于此,可以在适当的条件下再启动该方案,比如,可以确定子事务包内包含的子事务数量是否大于设定阈值,和/或,确定代理协调者节点接收协调者节点发送的子事务包的频次大于设定阈值,若是,再启动该方案,否则,可以暂时不启动该方案,而采用由代理协调者节点为子事务精确访问目标节点的方案。
根据上面的说明,更直观地,本说明书一个或多个实施例还提供了一种实际应用场景下,协调者节点、代理协调者节点、其他的数据节点宕机(用粗的竖杠表示节点宕机)时分别的处理流程,如图3~图5所示。
在该场景下,有第一数据中心和第二数据中心,四个节点,节点1和节点2在第一数据中心内,节点3和节点4在第二数据中心内。有三个数据分片A、B、C,每个数据分片分别具有三个副本,LeaderX代表数据分片X的主副本,FollowerX_1代表数据分片X在同数据中心内的从副本,FollowerX_2代表数据分片X在另一个数据中心上的从副本,在主副本可用的情况下,只访问主副本。假定节点1为协调者节点,节点3为代理协调者节点。在子事务读写及验证阶段只会访问相应数据分片的主副本,副本在全部验证结束之后进行同步,本例子考虑读写及验证阶段发生节点不可用的情况。
协调者节点接收到一个来自客户端的事务请求,其对应的事务记作Txn 1,并对其进行解析,获取执行该事务所涉及到的每个数据中心上的操作集合(可以代表对应的子事务)。该例中,具体解析为涉及为第一数据中心上的操作集合Ops 1与第二数据中心上的操作集合Ops 2,进而分发给自己或者代理协调者节点以执行相应的子事务。
在该场景下,当协调者节点宕机时,对协调者节点上所有主副本进行重新选主,优先选择同数据中心内的另一个从副本,此时,未完成事务由于还未进入提交阶段,因此均回滚,代理协调者节点向协调者节点发送的Ack消息发送失败,或者超时未接收到来自协调者节点的PrepareMsg消息时,也回滚尚未完成的子事务。当代理协调者节点宕机时,对代理协调者节点上的所有主副本重新选主,同样优先选择同数据中心内的从副本为新的主副本,当协调者节点向代理协调者节点发送的消息失败,或者超时未接收到代理协调者节点返回的Ack消息时,则再次向代理协调者发送消息以检查其是否故障,若发送失败,则选择代理协调者所在数据中心中的另一个节点,作为新的代理协调者,向其重新发送相应消息以便子事务正常执行。当其他的数据节点宕机时,同样需要对该节点上的所有主副本进行重新选择,在重新选主完成后,由新的主副本对外提供数据访问。
若不可用的不仅是单个节点而是整个数据时,则将流量切换到另一个跨数据中心的节点上去,实现跨机房容灾,此时对于不同类型节点不可用的处理,其具体流程与上一段思路大致相同,区别包括此时的新的主副本选择需要跨数据中心进行。
图3为本说明书一个或多个实施例提供的一种实际应用场景下,协调者节点宕机处理的流程示意图。图3中的流程可以包括以下步骤:
①、节点1宕机,即协调者节点不可用。此时,数据分片A的主副本LeaderA无法对外提供服务。
②、数据分片A重新选主,新的主副本为原来的FollowerA_1,重新选主后对两个副本上的日志进行同步。由于相应的事务(事务请求对应的事务整体,或者其中分配给协调者节点自身的子事务)是在读写及验证阶段异常,因此,尚未向数据分片中写入日志,则可以将该事务回滚。
③、此时代理协调者节点向协调者节点发送的Ack消息发送会失败,或者会超时未接收到来自协调者节的PrepareMsg消息,因此,也将回滚第二数据中心上的子事务。
图4为本说明书一个或多个实施例提供的一种实际应用场景下,代理协调者节点宕机处理的流程示意图。图4中的流程可以包括以下步骤:
①、节点3宕机,即代理协调者节点不可用。此时,数据分片C的主副本LeaderC无法对外提供服务。
②、数据分片C重新选主,新的主副本为原来的FollowerC_1,重新选主后对两个副本上的日志进行同步。
③、当协调者节点向代理协调者节点发送的消息失败,或者超时未接收到代理协调者节点返回的Ac消息k时,则再次向代理协调者节点发送消息检查原来的代理协调者节点是否不可用,若发送失败,则选择节点4为事务Txn 1在第二数据中心上新的代理协调者节点,向其重新发送消息以请求执行Txn 1包含的子事务。
图5为本说明书一个或多个实施例提供的一种实际应用场景下,其他的数据节点宕机处理的流程示意图。图5中的流程可以包括以下步骤:
①、节点2宕机,即该其他的数据节点不可用。此时,数据分片B的主副本LeaderB无法对外提供服务。
②、数据分片B重新选主,新的主副本为原来的FollowerB_1,重新选主后对两个副本上的日志进行同步。
③、当协调者节点在执行Txn1包含的子事务时,若涉及到数据分片B的访问,均切换至节点1上新的主副本执行。
通过图3~图5的例子,在基于RDMA优化数据中心内部网络的架构之上,利用为数据分片添加的同数据中心副本及跨数据中心副本来为系统提供一定的容灾能力,对读写及验证过程中可能发生的协调者节点不可用、代理协调者节点不可用、数据节点不可用等异常情况设计相应的恢复机制,在加速事务执行的基础之上提升系统的高可用性。
基于同样的思路,本说明书一个或多个实施例还提供了上述方法对应的装置和设备,如图6、图7所示。
图6为本说明书一个或多个实施例提供的一种跨数据中心的业务处理装置的结构示意图,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述装置包括:
处于第一数据中心内的协调者节点的请求解析模块602,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点的事务发送模块604,确定所述子事务涉及的数据分片,以及确定该数据分片的主副本所在的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点,以便在所述第二数据中心内,通过远程直接内存访问处理所述子事务;
第一不可用处理模块606,若所述协调者节点不可用,则确定所述协调者节点上是否有数据分片的主副本,若是,则选择所述数据分片的一个从副本,作为主副本,并回滚涉及所述数据分片的未完成事务;
所述代理协调者节点的通信失败处理模块608,在所述子事务发送给所述代理协调者节点之后,若与所述协调者节点之间涉及所述子事务的通信失败,则回滚未完成的所述子事务。
可选地,每个数据分片具有的一个主副本和至少两个从副本,分布在两个以上的数据中心内,所述主副本和至少一个所述从副本在同一个数据中心内的不同节点上,至少一个所述从副本在其他的数据中心内;
所述第一不可用处理模块606,优先在所述第一数据中心内选择所述数据分片的一个从副本,作为主副本。
可选地,还包括:
日志同步模块610,在所述选择所述数据分片的一个从副本,作为主副本之后,将选择的所述从副本与所述数据分片其他的从副本进行日志同步。
可选地,还包括:
所述代理协调者节点的事务执行模块612,在所述将所述子事务发送给所述代理协调者节点之后,确定所述子事务涉及的数据分片的主副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
所述协调者节点的响应处理模块614,根据各所述代理协调者节点的响应,继续处理所述事务请求。
可选地,还包括:
第二不可用处理模块616,若所述代理协调者节点不可用,则确定所述代理协调者节点上是否有数据分片的主副本,若是,优先在所述第二数据中心内选择所述数据分片的一个从副本,作为主副本;
所述协调者节点的代理重选模块618,在与所述协调者节点之间涉及所述子事务的通信失败之后,在所述第二数据中心内,重新选择一个节点,作为代理协调者节点,并重新与其进行所述通信,以使其执行所述子事务。
可选地,还包括:
所述协调者节点的本地执行模块620,在所述得到一个或者多个分别对应于一个数据中心的子事务之后,若所述第二数据中心即为所述第一数据中心,则确定所述子事务涉及的数据分片的主副本在所述第一数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务。
可选地,还包括:
第三不可用处理模块622,若所述数据节点不可用,则优先在所述第一数据中心内选择所述数据分片的一个从副本,作为主副本,所述协调者节点切换至重新选择出的所述主副本,执行所述子事务。
可选地,所述第一不可用处理模块606,若所述协调者节点不可用,则针对所述协调者节点上的所有主副本,在所述第一数据中心重新选择替代的主副本,确定所述第一数据中心内所述事务请求涉及主副本最多的节点;
将所述第一数据中心内所述事务请求涉及主副本最多的节点,重新确定为协调者节点,以继续处理所述事务请求对应的事务。
可选地,所述数据中心内搭建有远程直接内存访问网络,以用于执行所述子事务,以及同一个所述数据中心内的主副本与从副本同步。
可选地,不处于同一个所述数据中心的所述协调者节点与所述代理协调者节点,通过TCP/IP进行通信。
图7为本说明书一个或多个实施例提供的一种跨数据中心的业务处理设备的结构示意图,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
处理器与存储器之间可以通过总线通信,设备还可以包括与其他设备通信的输入/输出接口。
基于同样的思路,本说明书一个或多个实施例还提供了对应于图2中方法的一种非易失性计算机存储介质,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述介质存储有计算机可执行指令,所述计算机可执行指令设置为:
第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field ProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java HardwareDescription Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby HardwareDescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-Speed IntegratedCircuit HardwareDescription Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (21)

1.一种跨数据中心的业务处理方法,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述方法包括:
第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点,确定所述子事务涉及的数据分片,以及确定该数据分片的主副本所在的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点,以便在所述第二数据中心内,通过远程直接内存访问处理所述子事务;
若所述协调者节点不可用,则确定所述协调者节点上是否有数据分片的主副本,若是,则选择所述数据分片的一个从副本,作为主副本,并回滚涉及所述数据分片的未完成事务;
在所述子事务发送给所述代理协调者节点之后,所述代理协调者节点,若与所述协调者节点之间涉及所述子事务的通信失败,则回滚未完成的所述子事务。
2.如权利要求1所述的方法,每个数据分片具有的一个主副本和至少两个从副本,分布在两个以上的数据中心内,所述主副本和至少一个所述从副本在同一个数据中心内的不同节点上,至少一个所述从副本在其他的数据中心内;
所述选择所述数据分片的一个从副本,作为主副本,具体包括:
优先在所述第一数据中心内选择所述数据分片的一个从副本,作为主副本。
3.如权利要求1所述的方法,所述选择所述数据分片的一个从副本,作为主副本之后,所述方法还包括:
将选择的所述从副本与所述数据分片其他的从副本进行日志同步。
4.如权利要求1所述的方法,所述将所述子事务发送给所述代理协调者节点之后,所述方法还包括:
所述代理协调者节点,确定所述子事务涉及的数据分片的主副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
5.如权利要求2所述的方法,还包括:
若所述代理协调者节点不可用,则确定所述代理协调者节点上是否有数据分片的主副本,若是,优先在所述第二数据中心内选择所述数据分片的一个从副本,作为主副本;
所述协调者节点,在与所述代理协调者节点之间涉及所述子事务的通信失败之后,在所述第二数据中心内,重新选择一个节点,作为代理协调者节点,并重新与其进行所述通信,以使其执行所述子事务。
6.如权利要求2所述的方法,所述得到一个或者多个分别对应于一个数据中心的子事务之后,所述方法还包括:
所述协调者节点,若所述第二数据中心即为所述第一数据中心,则确定所述子事务涉及的数据分片的主副本在所述第一数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务。
7.如权利要求6所述的方法,还包括:
若所述数据节点不可用,则优先在所述第一数据中心内选择所述数据分片的一个从副本,作为主副本,所述协调者节点切换至重新选择出的所述主副本,执行所述子事务。
8.如权利要求1所述的方法,还包括:
若所述协调者节点不可用,则针对所述协调者节点上的所有主副本,在所述第一数据中心重新选择替代的主副本,确定所述第一数据中心内所述事务请求涉及主副本最多的节点;
将所述第一数据中心内所述事务请求涉及主副本最多的节点,重新确定为协调者节点,以继续处理所述事务请求对应的事务。
9.如权利要求1所述的方法,所述将所述子事务包发送给所述代理协调者节点之后,所述方法还包括:
所述代理协调者节点,触发所述子事务包通过所述第二数据中心内的远程直接内存访问网络,在所述第二数据中心内的节点间进行随机游走;
对于当前游走达到的节点,判断该节点是否能够支持执行所述子事务包中的至少部分事务,若是,则执行所述至少部分事务并对所述子事务包进行相应修改,之后继续游走,直至所述子事务包执行完毕。
10.如权利要求1~9任一项所述的方法,所述数据中心内搭建有远程直接内存访问网络,以用于执行所述子事务,以及同一个所述数据中心内的主副本与从副本同步。
11.如权利要求1~9任一项所述的方法,不处于同一个所述数据中心的所述协调者节点与所述代理协调者节点,通过TCP/IP进行通信。
12.一种跨数据中心的业务处理装置,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述装置包括:
处于第一数据中心内的协调者节点的请求解析模块,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点的事务发送模块,确定所述子事务涉及的数据分片,以及确定该数据分片的主副本所在的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点,以便在所述第二数据中心内,通过远程直接内存访问处理所述子事务;
第一不可用处理模块,若所述协调者节点不可用,则确定所述协调者节点上是否有数据分片的主副本,若是,则选择所述数据分片的一个从副本,作为主副本,并回滚涉及所述数据分片的未完成事务;
所述代理协调者节点的通信失败处理模块,在所述子事务发送给所述代理协调者节点之后,若与所述协调者节点之间涉及所述子事务的通信失败,则回滚未完成的所述子事务。
13.如权利要求12所述的装置,每个数据分片具有的一个主副本和至少两个从副本,分布在两个以上的数据中心内,所述主副本和至少一个所述从副本在同一个数据中心内的不同节点上,至少一个所述从副本在其他的数据中心内;
所述第一不可用处理模块,优先在所述第一数据中心内选择所述数据分片的一个从副本,作为主副本。
14.如权利要求12所述的装置,还包括:
所述代理协调者节点的事务执行模块,在所述将所述子事务发送给所述代理协调者节点之后,确定所述子事务涉及的数据分片的主副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
所述协调者节点的响应处理模块,根据各所述代理协调者节点的响应,继续处理所述事务请求。
15.如权利要求13所述的装置,还包括:
第二不可用处理模块,若所述代理协调者节点不可用,则确定所述代理协调者节点上是否有数据分片的主副本,若是,优先在所述第二数据中心内选择所述数据分片的一个从副本,作为主副本;
所述协调者节点的代理重选模块,在与所述代理协调者节点之间涉及所述子事务的通信失败之后,在所述第二数据中心内,重新选择一个节点,作为代理协调者节点,并重新与其进行所述通信,以使其执行所述子事务。
16.如权利要求13所述的装置,还包括:
所述协调者节点的本地执行模块,在所述得到一个或者多个分别对应于一个数据中心的子事务之后,若所述第二数据中心即为所述第一数据中心,则确定所述子事务涉及的数据分片的主副本在所述第一数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务。
17.如权利要求16所述的装置,还包括:
第三不可用处理模块,若所述数据节点不可用,则优先在所述第一数据中心内选择所述数据分片的一个从副本,作为主副本,所述协调者节点切换至重新选择出的所述主副本,执行所述子事务。
18.如权利要求12所述的装置,所述第一不可用处理模块,若所述协调者节点不可用,则针对所述协调者节点上的所有主副本,在所述第一数据中心重新选择替代的主副本,确定所述第一数据中心内所述事务请求涉及主副本最多的节点;
将所述第一数据中心内所述事务请求涉及主副本最多的节点,重新确定为协调者节点,以继续处理所述事务请求对应的事务。
19.如权利要求12~18任一项所述的装置,所述数据中心内搭建有远程直接内存访问网络,以用于执行所述子事务,以及同一个所述数据中心内的主副本与从副本同步。
20.如权利要求12~18任一项所述的装置,不处于同一个所述数据中心的所述协调者节点与所述代理协调者节点,通过TCP/IP进行通信。
21.一种跨数据中心的业务处理设备,应用于由多个数据中心构成的分布式系统,所述数据中心内包含多个节点,所述数据中心内的数据分片存储,每个数据分片具有一个主副本和至少一个从副本,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
第一数据中心内的协调者节点,接收并解析客户端发送的事务请求,得到一个或者多个分别对应于一个数据中心的子事务;
所述协调者节点,确定所述子事务对应的数据中心,作为第二数据中心,若所述第二数据中心不为所述第一数据中心,则在所述第二数据中心内确定代理协调者节点,将所述子事务发送给所述代理协调者节点;
所述代理协调者节点,确定所述子事务涉及的数据分片的副本在所述第二数据中心内所在的数据节点,通过对所述数据节点进行远程直接内存访问,执行所述子事务,根据执行结果响应所述协调者节点;
所述协调者节点,根据各所述代理协调者节点的响应,继续处理所述事务请求。
CN202210724076.3A 2022-06-24 2022-06-24 一种跨数据中心的业务处理方法、装置以及设备 Active CN115103011B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210724076.3A CN115103011B (zh) 2022-06-24 2022-06-24 一种跨数据中心的业务处理方法、装置以及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210724076.3A CN115103011B (zh) 2022-06-24 2022-06-24 一种跨数据中心的业务处理方法、装置以及设备

Publications (2)

Publication Number Publication Date
CN115103011A true CN115103011A (zh) 2022-09-23
CN115103011B CN115103011B (zh) 2024-02-09

Family

ID=83292652

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210724076.3A Active CN115103011B (zh) 2022-06-24 2022-06-24 一种跨数据中心的业务处理方法、装置以及设备

Country Status (1)

Country Link
CN (1) CN115103011B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110915172A (zh) * 2017-07-10 2020-03-24 芬基波尔有限责任公司 针对数据中心的接入节点
CN112506702A (zh) * 2020-12-03 2021-03-16 平安科技(深圳)有限公司 数据中心容灾方法、装置、设备及存储介质
WO2021103036A1 (zh) * 2019-11-30 2021-06-03 华为技术有限公司 一种事务提交系统、方法及相关设备
CN113391885A (zh) * 2021-06-18 2021-09-14 电子科技大学 一种分布式事务处理系统
CN113535656A (zh) * 2021-06-25 2021-10-22 中国人民大学 数据访问方法、装置、设备及存储介质
US20210365440A1 (en) * 2020-05-22 2021-11-25 Couchbase, Inc. Distributed transaction execution management in distributed databases
CN113992750A (zh) * 2020-07-10 2022-01-28 华为技术有限公司 一种全局事务协同方法、装置、设备及介质
CN114398157A (zh) * 2021-12-27 2022-04-26 清华大学 分布式事务处理方法、装置、设备、存储介质及程序产品

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110915172A (zh) * 2017-07-10 2020-03-24 芬基波尔有限责任公司 针对数据中心的接入节点
WO2021103036A1 (zh) * 2019-11-30 2021-06-03 华为技术有限公司 一种事务提交系统、方法及相关设备
US20210365440A1 (en) * 2020-05-22 2021-11-25 Couchbase, Inc. Distributed transaction execution management in distributed databases
CN113992750A (zh) * 2020-07-10 2022-01-28 华为技术有限公司 一种全局事务协同方法、装置、设备及介质
CN112506702A (zh) * 2020-12-03 2021-03-16 平安科技(深圳)有限公司 数据中心容灾方法、装置、设备及存储介质
CN113391885A (zh) * 2021-06-18 2021-09-14 电子科技大学 一种分布式事务处理系统
CN113535656A (zh) * 2021-06-25 2021-10-22 中国人民大学 数据访问方法、装置、设备及存储介质
CN114398157A (zh) * 2021-12-27 2022-04-26 清华大学 分布式事务处理方法、装置、设备、存储介质及程序产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
余安东;翟大海;苏瑾;: "数据副本一致性的算法研究与实现", 计算机应用研究, no. 1 *

Also Published As

Publication number Publication date
CN115103011B (zh) 2024-02-09

Similar Documents

Publication Publication Date Title
US20200257593A1 (en) Storage cluster configuration change method, storage cluster, and computer system
US10983880B2 (en) Role designation in a high availability node
JP6382454B2 (ja) 分散ストレージ及びレプリケーションシステム、並びに方法
US11271814B2 (en) Online capacity-expanding and online capacity-reducing methods and apparatuses for distributed consensus system
US10826812B2 (en) Multiple quorum witness
CN111368002A (zh) 一种数据处理方法、系统、计算机设备和存储介质
CN110224871A (zh) 一种Redis集群的高可用方法及装置
CN111338806B (zh) 一种业务控制方法及装置
CN105069152B (zh) 数据处理方法及装置
CN113010496B (zh) 一种数据迁移方法、装置、设备和存储介质
CN109450676B (zh) 一种交换机升级方法及装置、电子设备、计算机可读介质
KR20140111746A (ko) 워크 로드에 따라 동적 자원 할당 가능한 상호 연결 패브릭 스위칭 장치 및 방법
CN115510156A (zh) 一种云原生高可用数据库服务提供系统及方法
CN112612769A (zh) 文件处理方法、装置及存储介质
CN105827678A (zh) 一种基于高可用架构下的通信方法和节点
CN111818188B (zh) 一种Kubernetes集群的负载均衡可用性提升方法和装置
WO2021179584A1 (zh) Druid集群的迁移方法、装置、计算机设备及存储介质
CN115103011B (zh) 一种跨数据中心的业务处理方法、装置以及设备
CN113064768B (zh) 在区块链系统中切换分片节点的方法和装置
WO2018175160A1 (en) Application service-level configuration of dataloss failover
CN112346912A (zh) 基于网络文件系统的有状态服务主备高可用系统及方法
CN115098231A (zh) 一种跨数据中心的事务处理方法、装置以及设备
US11334450B1 (en) Backup method and backup system for virtual machine
WO2023179040A1 (zh) 一种节点切换方法及相关系统
WO2023162044A1 (ja) 切り替え方法、切り替えシステム及び切り替えプログラム

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