掌桥专利:专业的专利平台
掌桥专利
首页

分布式系统中数据迁移方法及装置

文献发布时间:2023-06-19 12:19:35


分布式系统中数据迁移方法及装置

技术领域

本说明书涉及计算机技术领域,特别涉及一种分布式系统中数据迁移方法。本说明书同时涉及一种分布式系统中数据迁移装置,一种分布式系统,一种计算设备,以及一种计算机可读存储介质。

背景技术

随着计算机技术的发展,分布式系统得到了广泛应用,分布式系统中的多点写入也被业界所追求,多点写的架构不仅能获得更高的写入性能,同时能让同一套的数据库机器资源得到更有效的利用。

现有技术中的Mulit-Group Paxos/Raft多点写方案将不同的分区映射到不同的Paxos/Raft Group中,实现相对高效的多点写入和多通道复制,并通过外部组件来对数据分片进行元数据管理,但是数据分片与不同Paxos/Raft Group之前的映射关系不灵活,用户无法根据实际情况对映射关系进行动态调整,同时数据分片由分片大小决定,容易出现数据量大导致Group数量过多,但实际产生日志复制的数据集很小,造成大量Group资源浪费,且该方案部署需要三个以上的服务器,整体部署成本较高。

发明内容

有鉴于此,本说明书实施例提供了一种分布式系统中数据迁移方法。本说明书同时涉及一种分布式系统中数据迁移装置,一种分布式系统,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种分布式系统中数据迁移方法,所述分布式系统包括至少两个项目群组,所述分布式系统的每个服务器中部署所述至少两个项目群组,所述方法包括:

接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点;

将所述数据迁移指令转发至所述第一项目主节点;

在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;

在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

根据本说明书实施例的第二方面,提供了一种分布式系统中数据迁移装置,所述分布式系统包括至少两个项目群组,所述分布式系统的每个服务器中部署所述至少两个项目群组,所述装置包括:

接收模块,被配置为接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点;

转发模块,被配置为将所述数据迁移指令转发至所述第一项目主节点;

监控模块,被配置为在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;

迁移模块,被配置为在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

根据本说明书实施例的第三方面,提供了一种分布式系统,所述分布式系统包括n个服务器和n个项目群组,每个服务器中部署协调者组件,每个项目群组包括一个项目主节点和n-1个项目从节点,每个服务器中部署一个项目群组的项目主节点,其中,n为大于等于3的整数;

所述协调者组件接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令;将所述数据迁移指令转发至所述第一项目主节点;在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

根据本说明书实施例的第四方面,提供了一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机指令,所述处理器用于执行所述计算机指令:

接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点;

将所述数据迁移指令转发至所述第一项目主节点;

在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;

在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机指令,所述计算机指令被处理器执行时实现任意所述分布式系统中数据迁移方法的步骤。

本说明书提供的分布式系统中数据迁移方法,所述分布式系统包括至少两个项目群组,所述分布式系统的每个服务器中部署所述至少两个项目群组,所述方法包括接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点;将所述数据迁移指令转发至所述第一项目主节点;在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

本说明书一实施例通过上述分布式系统中数据迁移方法,通过分布式系统一致性协议实现分布式系统中的高可用强一致,通过分布式系统中节点进行事物提交时保持一致性的算法实现数据迁移,保证了整个迁移过程的的一致性,不用引入外部组件,降低了容灾情况下的风险和部署成本,根据指令对数据实时进行迁移调整,不仅能保证容灾情况下的数据一致性,还避免了分布式系统的资源浪费,无需应用外部组件,也降低了部署成本。

附图说明

图1是本说明书一实施例提供的分布式系统的架构示意图;

图2是本说明书一实施例提供的一种分布式系统中数据迁移方法的流程图;

图3是本说明书第二实施例提供的分布式系统的架构示意图;

图4是本说明书第二实施例提供的一种应用于数据库日志迁移的分布式系统中数据迁移方法的处理流程图;

图5是本说明书一实施例提供的一种分布式系统中数据迁移装置的结构示意图;

图6是本说明书一实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

Paxos/Raft:分布式一致性算法。

Paxos/Raft Replication:基于Paxos/Raft算法实现的日志复制方案,可以保障集群多个节点之间容灾切换后的日志一致性。

Multi-Group Paxos/Raft Replication:拥有多Group的基于Paxos/Raft协议实现的日志复制方案,能够获得更好的性能扩展性。

2PC:为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种算法。

在本说明书中,提供了一种分布式系统中数据迁移方法,本说明书同时涉及一种分布式系统中数据迁移装置,一种分布式系统,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

本说明书一实施例提供一种分布式系统,所述分布式系统包括n个服务器和n个项目群组,每个服务器中部署协调者组件,每个项目群组包括一个项目主节点和n-1个项目从节点,每个服务器中部署一个项目群组的项目主节点,其中,n为大于等于3的整数;

所述协调者组件接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令;将所述数据迁移指令转发至所述第一项目主节点;在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

参见图1,图1示出了本说明书一实施例提供的分布式系统的架构示意图,图1所示分布式系统的架构示意图以分布式系统中有三个服务器、三个项目群组为例。

如图1所示,所述分布式系统包括3个服务器,分别为服务器1、服务器2和服务器3,在服务器中部署有协调者组件和三个项目群组,分别为项目群组0、项目群组1和项目群组2,每个服务器中均部署上述三个项目群组,即在服务器1中部署有项目群组0、项目群组1和项目群组2;在服务器2中部署有项目群组0、项目群组1和项目群组2;在服务器3中部署有项目群组0、项目群组1和项目群组2,每个项目群组之间可以分别管理不同的项目,也可以共同管理同一个项目,以日志管理为例,项目群组0、项目群组1和项目群组2可以分别管理不同项目的日志,也可以管理同一个项目日志,其中每个项目群组管理三分之一的日志复制流量。

对于项目群组0,在服务器1中是项目主节点,在服务器2和服务器3中是项目从节点;对于项目群组1,在服务器2中是项目主节点,在服务器1和服务器3中是项目从节点;对于项目群组2,在服务器3中是项目主节点,在服务器1和服务器3中是项目从节点。

图1仅为本说明书提供的一具体实施方式,在实际应用中,每个项目群组中的节点均可以为主节点,并且每个项目群组有且仅有一个主节点。项目群组的主节点用于接收处理项目层下发的项目处理指令,如读取、写入、调用等,同时将主节点上对项目数据做的变更在项目群组的从节点中进行同步,进而实现分布式系统的数据一致性。例如,如图1所示,服务器1中的项目群组0的节点为项目群组0的主节点,数据库A的读写操作通过项目群组0实现,则对数据库A的读写操作由服务器1上的项目群组0的主节点进行处理,并在服务器2和服务器3的项目群组0的从节点上进行数据同步。

图2示出了根据本说明书一实施例提供的一种分布式系统中数据迁移方法的流程图,所述分布式系统的架构以图1所示为例,所述分布式系统包括至少两个项目群组,所述分布式系统的每个服务器中部署所述至少两个项目群组,所述方法具体包括以下步骤:

步骤202:接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点。

分布式系统的每个服务器中设置有协调者组件(Coordinator),协调者组件负责分布式系统中分布式事务的协调功能,每个协调者组件可以监控当前服务器中的项目请求、每个项目群组的信息,而且分布式系统的每个服务器中的协调者组件还可以互相通信,及时分享当前节点的各种信息,协调者组件是分布式系统中十分重要的协调组件。

目标数据为需要在分布式系统中进行迁移的数据,可以为文件、视频、图片、数据库、数据库的日志信息等,在本说明书中,对目标数据的具体内容不做限制,以实际应用为准。需要注意的是,本说明书中提及的数据迁移,并不是指实际的数据的复制、剪切处理,而是在修改服务器中的数据映射关系,比如目标数据的处理群组为项目群组1,当项目群组1上的负载过大,而项目群组2上的负载较少时,可以将目标数据的处理群组从项目群组1迁移至项目群组2,目标数据本身还是存在于服务器中,修改的是目标数据的映射关系。由原来的“目标数据-项目群组1”变更为“目标数据-项目群组2”。

数据迁移指令具体是指将目标数据对应的项目群组进行迁移的指令,即将目标数据对应的项目群组由第一项目群组迁移至第二项目群组。如将目标数据对应的项目群组由项目群组1迁移至项目群组2。

第一项目群组具体是指目标数据当前对应的项目群组,第二项目群组具体是指目标数据将要被迁移至的项目群组,第一项目群组和第二项目群组中均中包括一个项目主节点和多个项目从节点,项目节点和项目从节点的数量与分布式系统中服务器的数量相同,项目主节点用于接收针对目标数据的请求,同时将所述请求发送给项目从节点。第一项目主节点和第一项目从节点是第一项目群组对应的节点,第二项目主节点和第二项目从节点是第二项目群组对应的节点。

在本说明书提供的一具体实施方式中,以目标数据为视频V,第一项目群组为项目群组0、第二项目群组为项目群组1为例,视频V的访问请求在项目群组0上,但是由于项目群组0的负载较大,同时项目群组1的负载较小,需要将视频V对应的项目群组由项目群组0变更为项目群组1,则接收将视频V从第一项目群组迁移至第二项目群组的迁移指令。

可选的,在接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令之后,所述方法还包括:

锁定所述目标数据。

在数据迁移过程中,目标数据是不能处理访问请求的,即目标数据是不能被占用的,因此,需要先锁定目标数据,防止后续还有访问请求抵达目标数据,导致目标数据迁移失败,同时,在锁定目标数据的同时,还要终止正在访问目标数据的请求,比如在接收数据迁移指令时,有两个访问请求正在访问目标数据,在锁定目标数据不再接受后续的访问请求的情况下,还要终止当前正在访问目标数据带来两个访问请求,并向访问请求的访问者返回访问失败的信息。

在本说明书提供的一具体实施方式中,沿用上例,锁定视频V,拒绝视频V后续的访问请求,同时向正在访问视频V的三个访问用户返回访问失败的信息,告知访问用户视频V暂时无法访问。

具体的,锁定所述目标数据,包括:

为所述目标数据添加锁定标识,其中,所述锁定标识用于标识所述目标数据暂停访问。

锁定所述目标数据具体实施时,是为目标数据添加锁定标识,所述锁定标识用于标识所述目标数据暂时停止被访问,锁定标识的具体实施方式有很多种,比如可以设置一个专门用于表示目标数据是否被访问的数据表,当数据表中目表数据对应的访问状态设置为锁定时,则所述目标数据无法访问,当数据表中目标数据对应的访问状态为释放或空时,则所述目标数据可以访问;还可以在目标数据的属性信息中设置专门的访问状态标识,并预设数字0代表可以访问,数字1代表锁定,当为目标数据添加锁定标识时,将访问状态标识设置为1,用以表示目标数据无法访问。锁定标识的具体设置以实际应用为准,在本说明书中不做限制。

在实际应用中,所述目标数据还可以是目标项目数据对应的日志信息。如项目数据库对应的日志信息、对多媒体文件操作的日志信息等等。在分布式系统中,每个服务器上均设置有目标项目数据,目标项目数据与目标项目数据对应的日志信息一一对应,对目标数据的迁移还可以是对目标项目数据对应的日志信息的迁移,如数据库1和数据库2两个不同观点数据库通过项目群组1进行日志复制,即对数据库1和数据库2的读写处理均经由项目群组1的项目主节点进行处理,现在希望将数据库2的日志信息迁移至项目群组2,在迁移完成后,对数据库2的读写处理即可经由项目群组2的项目主节点进行处理。

相应的,在接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令之后,所述方法还包括:

锁定所述目标项目数据。

当目标数据为目标项目数据对应的日志信息的情况下,即可对目标项目数据进行锁定,对目标项目数据进行锁定的具体方式参见上述锁定目标数据的具体解释,在此就不再赘述,在实际应用中,日志信息记录了目标项目数据内的操作记录,当有项目请求抵达时,若只锁定日志信息是无法阻止目标项目数据被访问的,至有锁定目标项目数据,才可以真正的阻止目标项目数据被访问,并且当目标项目数据被访问后,目标项目数据对应的日志信息就会停止增加新的条目。

具体的,锁定所述目标项目数据,包括:

为所述目标项目数据添加锁定标识,其中,所述锁定标识用于标识所述目标项目数据暂停访问。

锁定目标项目数据的具体实施方式也是为目标项目数据添加锁定标识,为目标项目数据添加锁定标识的具体解释参见上述为目标数据添加锁定标识的具体解释,在此就不在赘述。

在本说明书提供的一具体实施方式中,以目标数据为数据库1对应的日志信息,第一项目群组为项目群组1,第二项目群组为项目群组2为例,接收到将数据库1的日志信息从项目群组1迁移至项目群组2的数据迁移指令,在接收到数据迁移指令后,为数据库1添加锁定标识,停止针对数据库1的访问请求。

步骤204:将所述数据迁移指令转发至所述第一项目主节点。

当数据迁移指令抵达后,根据数据迁移指令中的信息,确定目标数据当前位于第一项目群组,因此协调者组件将数据迁移指令转发给第一项目群组中的第一项目主节点。

在本说明书提供给的一具体实施方式中,沿用上述的视频V的例子,项目群组0的第一项目主机节点为项目节点0-1,第一项目从节点为项目节点0-2和项目节点0-3,将数据迁移指令转发至项目群组0的项目节点0-1。

步骤206:在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的。

第一项目主节点在接收到数据迁移指令后,响应于所述数据迁移指令,基于2PC算法向分布式系统中的其他第一项目从节点发送数据迁移准备指令。

2PC(two phase commit,两阶段提交)算法,顾名思义是两个阶段,先由一方进行提议(propose)并收集其他节点的反馈,再根据反馈决定提交(commit)或终止事物,发起提议的节点通常被称之为提议者,参与决议的节点通常被称为参与者,当提议者发起一个提议后,当超过半数的参与者接受该提议后,即该协议在分布式系统中达成所述协议,可以执行。

在本说明书提供的分布式系统中,由第一项目主节点响应于数据迁移指令向第一项目从节点发起数据迁移准备指令。

当协调者组件通过监控发现超过半数的第一项目从节点接收到并同意了第一项目主节点发送的数据迁移准备指令的情况下,则认定第一项目主节点的数据迁移准备指令在第一项目群组中达成了多数派协定。

当数据迁移准备指令在第一项目群组中达成了多数派协定后,协调者组件即向第二项目群组的项目主节点(第二项目主节点)发送迁移提交信息,所述迁移提交信息告知第二项目主节点在第一项目群组中已经就数据迁移准备指令达成了多数派协定。

在本说明书提供的一具体实施方式中,沿用上例,项目节点0-1在接收到数据迁移指令后,向项目节点0-2和项目节点0-3发送数据迁移准备指令,在监控到超过半数的项目群组0的项目从节点接收了项目节点0-1发送的数据迁移准备指令的情况下,向第二项目群组的第二项目主节点(项目节点1-2)发送迁移提交信息,第二项目群组包括三个项目节点,其中,项目节点1-2为第二项目主节点,项目节点1-1和项目节点1-3为第二项目从节点。

步骤208:在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

协调者组件在监控到超过半数的第二项目从节点接收到第二项目主节点发送的数据迁移提交指令的情况下,即可认定数据迁移可以在每个服务器中进行,即将每个服务器中目标数据对应的项目群组从第一项目群组变更为第二项目群组,至此完成了目标数据从第一项目群组迁移至第二项目群组的数据迁移任务。

在实际应用中,当第二项目主节点接收到协调者组件发送的迁移提交信息后,即可获知第一项目群组中的每个节点均已经准备好了目标数据的迁移准备工作,然后向每个第二项目从节点发送数据迁移提交指令,告知每个第二项目从节点要进行数据的迁移工作,当超过半数的第二项目从节点接收并认可了第二项目主节点发送的数据迁移提交指令的情况下,即可将每个服务器中的目标数据对应的项目群组由第一项目群组变更为第二项目群组。

可选的,在将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组之后,所述方法还包括:

取消所述目标数据的锁定标识。

在实际应用中,当目标数据对应的项目群组变更完成后,还需要取消对所述目标数据的锁定,即取消所述目标数据的锁定标识,具体的,可以为取消锁定标识或删除锁定标识,取消所述目标数据的锁定标识的具体实施方式以实际应用为主,在本说明书中对此不做限定。

需要注意的是,当目标数据为目标项目数据对应的日志信息的情况下,取消所述目标数据的锁定标识具体是取消所述目标项目数据对应的锁定标志。

在本说明书提供的一具体实施方式中,沿用上例,当第二项目主节点是项目节点1-2,当项目节点1-2接收到协调者组件发送的迁移提交信息的情况下,向项目节点1-1和项目节点1-3发送数据迁移提交指令,当超过半数的第二项目群组的项目节点接收到项目节点1-2发送的数据迁移提交指令的情况下,在每个服务器中执行将视频V对应的项目群组由“视频V-项目群组0”变更为“视频V–项目群组1”,至此视频V完成了从项目群组0迁移至项目群组1的迁移操作,之后取消视频V的锁定标识。

所述方法还包括:

接收针对所述目标数据的访问请求;

获取所述目标数据对应的锁定标识;

在获取到所述目标数据对应的锁定标识的情况下,返回访问报错提示;

在未获取到所述目标数据对应的锁定标识的情况下,响应于所述访问请求访问所述目标数据。

在实际应用中,当分布式系统接收到目标数据的访问请求的情况下,要先获取目标数据是否被标识有锁定标识,在获取到锁定标识的情况下,则说明所述目标数据当前处于锁定状态,向访问请求的发起者返回访问报错提示,在未获取到锁定标识的情况下,则说明所述目标数据当前未处于锁定状态,可以直接对所述目标数据进行访问。

本说明书提供的分布式系统中数据迁移方法,通过分布式系统一致性协议实现分布式系统中的高可用强一致,通过分布式系统中节点进行事物提交时保持一致性的算法实现数据迁移,保证了整个迁移过程的的一致性,不用引入外部组件,降低了容灾情况下的风险和部署成本,根据指令对数据实时进行迁移调整,不仅能保证容灾情况下的数据一致性,还避免了分布式系统的资源浪费,无需应用外部组件,也降低了部署成本。

下述结合图3和图4,以本说明书提供的分布式系统中数据迁移方法在数据库日志迁移的应用为例,对所述分布式系统中数据迁移方法进行进一步说明。其中,图3是本说明书一实施例提供的分布式系统的架构示意图,如图3所示,所述分布式系统包括3个服务器,2个项目群组。其中,项目群组0的主节点在服务器1,项目群组2的主节点在服务器2,用户对数据库1(DB1)和数据库2(DB2)的访问处理操作在项目群组0。

图4示出了本说明书一实施例提供的一种应用于数据库日志迁移的分布式系统中数据迁移方法的处理流程图,具体包括以下步骤:

步骤402:接收将DB2的日志从项目群组0迁移至项目群组1的数据迁移指令。

在本说明书提供的具体实施例中,接收数据迁移指令,所述数据迁移指令具体是指将DB2的日志从项目群组0迁移至项目群组1。

步骤404:为DB2添加锁定标识,并终止DB2的访问请求。

在本说明书提供的具体实施例中,为DB2添加锁定标识,锁定DB2,同时将项目群组0上针对DB2的所有访问请求终止。

步骤406:项目群组0的主节点向项目群组0的从节点发送数据迁移准备指令。

在本说明书提供的具体实施例中,项目群组0的项目主节点0-1向项目群组0的项目从节点0-2和项目从节点0-3发送数据迁移准备指令。

步骤408:在超过半数的项目群组0的从节点接收到数据迁移准备指令的情况下,项目群组1的主节点向项目群组1的从节点发送数据迁移提交指令。

在本说明书提供的具体实施例中,协调者组件在监控到超过半数的项目群组0的项目从节点接收并认可项目主节点0-1发送的数据迁移准备指令的情况下,通知项目群组1的项目主节点1-2发送数据迁移提交指令。项目群组1的项目主节点1-2向项目群组1的项目从节点1-1和项目从节点1-3发送数据迁移提交指令。

步骤410:在超过半数的项目群组1的从节点接收到数据迁移提交指令的情况下,将每个服务器中DB2的日志对应的项目群组由项目群组0变更为项目群组1。

在本说明书提供的具体实施例中,协调者组件在监控到超过半数的项目群组1的项目从节点接收并认可项目主节点1-2发送的数据迁移提交指令的情况下,由服务器1中的协调者组件将服务器1中的DB2的日志对应的项目群组由项目节点0-1变更为项目节点1-1,由服务器2中的协调者组件将服务器2中的DB2的日志对应的项目群组由项目节点0-2变更为项目节点1-2,由服务器3中的协调者组件将服务器3中的DB2的日志对应的项目群组由项目节点0-3变更为项目节点1-3,再取消DB2的锁定标识,至此DB2的日志由项目群组0迁移至项目群组1。

本说明书提供的分布式系统中数据迁移方法,通过分布式系统一致性协议实现分布式系统中的高可用强一致,通过分布式系统中节点进行事物提交时保持一致性的算法实现数据迁移,保证了整个迁移过程的的一致性,不用引入外部组件,降低了容灾情况下的风险和部署成本,根据指令对数据实时进行迁移调整,不仅能保证容灾情况下的数据一致性,还避免了分布式系统的资源浪费,无需应用外部组件,也降低了部署成本。

与上述方法实施例相对应,本说明书还提供了分布式系统中数据迁移装置实施例,图5示出了本说明书一实施例提供的一种分布式系统中数据迁移装置的结构示意图。所述分布式系统包括至少两个项目群组,所述分布式系统的每个服务器中部署所述至少两个项目群组,如图5所示,该装置包括:

接收模块502,被配置为接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点;

转发模块504,被配置为将所述数据迁移指令转发至所述第一项目主节点;

监控模块506,被配置为在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;

迁移模块508,被配置为在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

可选的,所述装置还包括:

锁定模块,被配置为锁定所述目标数据。

可选的,所述锁定模块,进一步被配置为:

为所述目标数据添加锁定标识,其中,所述锁定标识用于标识所述目标数据暂停访问。

可选的,所述装置还包括:

取消模块,被配置为取消所述目标数据的锁定标识。

可选的,所述装置还包括:

访问请求接收模块,被配置为接收针对所述目标数据的访问请求;

获取模块,被配置为获取所述目标数据对应的锁定标识;

报错模块,被配置为在获取到所述目标数据对应的锁定标识的情况下,返回访问报错提示;

访问模块,被配置为在未获取到所述目标数据对应的锁定标识的情况下,响应于所述访问请求访问所述目标数据。

可选的,所述目标数据包括目标项目数据对应的日志信息。

可选的,所述锁定模块,进一步被配置为:

锁定所述目标项目数据。

可选的,所述锁定模块,进一步被配置为:

为所述目标项目数据添加锁定标识,其中,所述锁定标识用于标识所述目标项目数据暂停访问。

可选的,所述取消模块,进一步被配置为:

取消所述目标项目数据的锁定标识。

本说明书提供的分布式系统中数据迁移装置,所述分布式系统包括至少两个项目群组,所述分布式系统的每个服务器中部署所述至少两个项目群组,所述装置通过接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点;将所述数据迁移指令转发至所述第一项目主节点;在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

本说明书一实施例通过上述分布式系统中数据迁移装置,通过分布式系统一致性协议实现分布式系统中的高可用强一致,通过分布式系统中节点进行事物提交时保持一致性的算法实现数据迁移,保证了整个迁移过程的的一致性,不用引入外部组件,降低了容灾情况下的风险和部署成本,根据指令对数据实时进行迁移调整,不仅能保证容灾情况下的数据一致性,还避免了分布式系统的资源浪费,无需应用外部组件,也降低了部署成本。

上述为本实施例的一种分布式系统中数据迁移装置的示意性方案。需要说明的是,该分布式系统中数据迁移装置的技术方案与上述的分布式系统中数据迁移方法的技术方案属于同一构思,分布式系统中数据迁移装置的技术方案未详细描述的细节内容,均可以参见上述分布式系统中数据迁移方法的技术方案的描述。

图6示出了根据本说明书一实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。

计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。

其中,处理器620用于执行如下计算机指令:

接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点;

将所述数据迁移指令转发至所述第一项目主节点;

在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;

在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的分布式系统中数据迁移方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述分布式系统中数据迁移方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,所述计算机指令被处理器执行时以用于:

接收将目标数据从第一项目群组迁移至第二项目群组的数据迁移指令,其中,所述第一项目群组包括第一项目主节点和至少两个第一项目从节点,所述第二项目群组包括第二项目主节点和至少两个第二项目从节点;

将所述数据迁移指令转发至所述第一项目主节点;

在监控到预设数量的第一项目从节点接收到所述第一项目主节点发送的数据迁移准备指令的情况下,向所述第二项目主节点发送迁移提交信息,其中,所述数据迁移准备指令是所述第一项目主节点响应于所述数据迁移指令发出的;

在监控到预设数量的第二项目从节点接收到所述第二项目主节点发送的数据迁移提交指令的情况下,将所述每个服务器中目标数据对应的项目群组从所述第一项目群组变更为所述第二项目群组,其中,所述数据迁移提交指令是所述第二项目主节点响应于所述迁移提交信息发出的。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的分布式系统中数据迁移方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述分布式系统中数据迁移方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

相关技术
  • 分布式系统中数据迁移方法及装置
  • 由分布式系统中的装置执行的方法及在分布式系统中的装置
技术分类

06120113255831