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

一种集群数据库负载均衡方法及装置

文献发布时间:2023-06-19 19:23:34


一种集群数据库负载均衡方法及装置

技术领域

本申请涉及分布式数据查询领域,尤其涉及一种集群数据库负载均衡方法。本申请还涉及一种集群数据库负载均衡装置。

背景技术

分布式数据库具有高可用的特点,其高可用通常通过多副分片来实现。例如在进行数据存储时,将数据分成n个主分片,其中每个主分片保存在不同的数据节点上,同时为每个主分片准备1到多个副分片,所述副分片与主分片保存在不同的数据节点上,避免当一个数据节点损坏时,其副分片也无法使用。当集群正常时,查询语句通常只使用主分片就可以满足需要,副分片只是需要在数据写入时同步写入并保持数据与主分片一致。

但是,当有数据节点损坏时,查询语句就需要使用副分片进行计算,此时,容易产生数据节点负载不均衡的情况。

例如,集群数据分片分布方式如下(排在前边的是主分片后边的是副分片):

假设node3损坏,则剩余节点如下:

现有执行计划下发逻辑:分片3主分片损坏,则每次发往备分片所在的node2,会导致node2上任务数翻倍,可能成为瓶颈:

由上表可知,现有技术中,当分布式数据集群中的一个或者多个数据节点出现损坏的情况,则导致如下问题:

1、一个或者多个数据节点的CPU的任务数翻倍;内存根据情况翻倍或增加,同时如果缓存较小,会导致大量数据换入换出,增加读数据的压力。

2、一个或者多个数据节点的读数据负载会翻倍,还要增加因为数据换入换出的读操作。

发明内容

本申请的目的在于克服现有技术中的缺陷,提供一种集群数据库负载均衡方法。本申请还涉及一种集群数据库负载均衡装置。

本申请提供一种集群数据库负载均衡方法,包括:

获取集群数据库的可用数据节点信息;

根据所述可用数据节点信息,将所述集群数据库的每一个协调点根据用户的查询语句生成的数据执行计划下发到每一个所述可用数据节点,包括:

所述协调点根据发送给每一个所述可用数据节点的执行计划,判断每个可用数据节点的负载情况;

根据所述负载情况确定每个所述可用数据节点下发执行计划包含的任务数。

可选的,所述判断每个可用数据节点的负载情况,包括:

基于数据主分片的多副分片循环备份,所述协调点记录下发到每个所述可用数据节点的任务数。

可选的,所述多副分片循环备份,包括:

每次下发任务后增加每个数据节点的任务数,下发任务结束后减少每个可用数据节点任务数。

可选的,所述多副分片循环备份中,任意两个所述数据节点中的主分片或者任意两个所述数据节点中的副分片是不同的。

可选的,所述执行计划包括:查询语句或者物理计划。

本申请还提供一种集群数据库负载均衡装置,包括:

收集模块,用于获取集群数据库的可用数据节点信息;

计划模块,用于根据所述可用数据节点信息,将所述集群数据库的每一个协调点根据用户的查询语句生成的数据执行计划下发到每一个所述可用数据节点,包括:

所述协调点根据发送给每一个所述可用数据节点的执行计划,判断每个可用数据节点的负载情况;

根据所述负载情况确定每个所述可用数据节点下发执行计划包含的任务数。

可选的,所述计划模块包括:

判断单元,用于所述判断每个可用数据节点的负载情况,包括:

基于数据主分片的多副分片循环备份,所述协调点记录下发到每个所述可用数据节点的任务数。

可选的,所述多副分片循环备份,包括:

每次下发任务后增加每个数据节点的任务数,下发任务结束后减少每个可用数据节点任务数。

可选的,所述多副分片循环备份中,任意两个所述数据节点中的主分片或者任意两个所述数据节点中的副分片是不同的。

可选的,所述执行计划包括:查询语句或者物理计划。

本申请的优点和有益效果:

本申请提供一种集群数据库负载均衡方法,包括:获取集群数据库的可用数据节点信息;根据所述可用数据节点信息,将所述集群数据库的每一个协调点根据用户的查询语句生成的数据执行计划下发到每一个所述可用数据节点,包括:所述协调点根据发送给每一个所述可用数据节点的执行计划,判断每个可用数据节点的负载情况;根据所述负载情况确定每个所述可用数据节点下发执行计划包含的任务数。本申请通过根据每个数据节点不同任务数情况进行任务下发,当数据节点发生损坏的情况时,可以实现数据节点的负载均衡,提高数据查询效率。

附图说明

图1是本申请中集群数据库负载均衡流程示意图。

图2是本申请中集群数据库负载均衡装置示意图。

具体实施方式

下面结合附图和具体实施例对本申请作进一步说明,以使本领域的技术人员可以更好地理解本申请并能予以实施。

以下内容均是为了详细说明本申请要保护的技术方案所提供的具体实施过程的示例,但是本申请还可以采用不同于此的描述的其他方式实施,本领域技术人员可以在本申请构思的指引下,采用不同的技术手段实现本申请,因此本申请不受下面具体实施例的限制。

本申请提供一种集群数据库负载均衡方法,包括:获取集群数据库的可用数据节点信息;根据所述可用数据节点信息,将所述集群数据库的每一个协调点根据用户的查询语句生成的数据执行计划下发到每一个所述可用数据节点,包括:所述协调点根据发送给每一个所述可用数据节点的执行计划,判断每个可用数据节点的负载情况;根据所述负载情况确定每个所述可用数据节点下发执行计划包含的任务数。本申请通过根据每个数据节点不同任务数情况进行任务下发,当数据节点发生损坏的情况时,可以实现数据节点的负载均衡,提高数据查询效率。

图1是本申请中集群数据库负载均衡流程示意图。

请参照图1所示,S101获取集群数据库的可用数据节点信息;

本申请中所述集群数据库是指分布式数据库,所述分布式数据库(DDB)是一种物理上分散而逻辑上集中的数据库系统,是数据库技术和网络进行结合后的产物。

所述分布式数据库设置有多个数据节点,各数据节点具有自主处理数据任务的能力,并通过网络连接为一体。因此,所述分布式数据库各个数据节点是自主处理数据,但是全部数据节点组成的分布式数据库又是集中管理的。

在本申请中,所述数据节点连接到一个或者多个协调点,所述协调点功能之一用于向所述数据节点发送执行计划。

在所述分布式数据库中,还可分为全局控制集中型和全局控制分散型两种控制类型,所述全局控制集中型是指分布式控制集中在一个节点,而全局控制分散型是指分布式控制分散到各个节点。所述集中在一个节点或者分散到各个节点中所述的节点,在本申请中称为协调点。

在分布式数据库中,数据吞吐是非常庞大的,单个数据节点难以支撑如此大的数据吞吐量,因此需要将数据进行拆分,分散在各个数据节点上进行存储。在本申请中,所述数据拆分描述为将数据分为多个主分片。

分布式数据库需要考虑的最重要的问题之一是查询问题,需要将分散存储的数据进行通过高层次查询映射到每个数据节点的操作,最后通过网络进行数据汇总,完成查询结果,由于每个数据节点是物理上分开的,因此需要实时获取每个数据节点的可用状态。

本申请中,所述分布式数据库通过设置的一致性存储服务保持每个数据节点的可用状态,通过所述一致性存储服务获取每个所述数据节点的可用状态,进一步获取可用数据节点信息。

请参照图1所示,S102根据所述可用数据节点信息,将所述集群数据库的每一个协调点根据用户的查询语句生成的数据执行计划下发到每一个所述可用数据节点。

所述协调点用于设置执行计划并向每个所述数据节点下发,本申请采用循环备份的方式执行数据备份。

具体的,数据在在进行工作时,首先将数据分为多个主分片,将不同的主分片分别发送到不同的数据节点。进一步的,所述主分片生成一个或者多个副本,称为副分片,将所述幅分片保存在于所述主分片不同的数据节点中。

所述循环备份可以通过表1进行进一步说明:

表1

在表1中,主从分片即为主分片和从分片,从表1中可以看出,所述循环备份的特点是,每个数据节点中的数据分片是不一致的。

因此,所述循环备份的一种方式即,当数据节点1存储第一主分片时,备份第二副分片,当所述数据节点2存储第二主分片是,备份第三副分片,因此可以用如下公式表示:

主分片编号=i

副分片编号=i+1

其中,i表示数据节点的编号,i∈(1,n),且当i=n时,副分片=1。

当进行任务下发时,所述协调点将根据所述循环备份的特点进行任务分配,实现负载均衡。具体的,基于数据主分片的多副分片循环备份,所述协调点记录下发到每个所述可用数据节点的任务数。每次下发任务后增加每个数据节点的任务数,下发任务结束后减少每个可用数据节点任务数。即,数据输入时需要分别输入主分片和备分片,数据输出时,若无数据节点损坏,则直接读取每个数据节点中的主分片即可。

所述执行计划下发到每一个所述可用数据节点,包括:

S103所述协调点根据发送给每一个所述可用数据节点的执行计划,判断每个可用数据节点的负载情况。

S104根据所述负载情况确定每个所述可用数据节点下发执行计划包含的任务数。

具体的,通常情况下,所述数据节点的负载情况是较为均衡的,但是若有数据节点损坏,则负载不再均衡。

基于此,本申请设置的均衡方式是在循环备份的基础上,进行任务数量循环提高的方式进行。表2可以表现出本申请协调点下发任务的过程:

表2

由表2可以看出,所述协调点在SQL1中对第二个数据节点的任务下发多了一倍,因此判断其负载较大,在SQL2中则不再对第二数据节点增加任务,而是增加到第一数据节点,并在SQL3不再对第以数据节点和第二数据节点增加任务,对第三数据节点增加任务。

可以计算得知,所述第一数据节点任务数是1+2+1=4,第二数据节点的任务数是2+1+1=4,第四数据节点的任务数是1+1+2=4。由此可知损坏的第三节点的任务数平均分配到了第一、第二和第四数据节点,因此负载是均衡的。

当出现1个节点损坏时,可以通过调整下发给哪些节点来进行负载均衡,当出现多个节点损坏时,虽然可能无法做到完全均衡,但也能做到部分调整。

本申请还提一种集群数据库负载均衡装置,具体包括有收集模块和计划模块。

图2是本申请中集群数据库负载均衡装置示意图。

请参照图2所示,收集模块201,用于获取集群数据库的可用数据节点信息;

本申请中所述集群数据库是指分布式数据库,所述分布式数据库(DDB)是一种物理上分散而逻辑上集中的数据库系统,是数据库技术和网络进行结合后的产物。

所述分布式数据库设置有多个数据节点,各数据节点具有自主处理数据任务的能力,并通过网络连接为一体。因此,所述分布式数据库各个数据节点是自主处理数据,但是全部数据节点组成的分布式数据库又是集中管理的。

在本申请中,所述数据节点连接到一个或者多个协调点,所述协调点功能之一用于向所述数据节点发送执行计划。

在所述分布式数据库中,还可分为全局控制集中型和全局控制分散型两种控制类型,所述全局控制集中型是指分布式控制集中在一个节点,而全局控制分散型是指分布式控制分散到各个节点。所述集中在一个节点或者分散到各个节点中所述的节点,在本申请中称为协调点。

在分布式数据库中,数据吞吐是非常庞大的,单个数据节点难以支撑如此大的数据吞吐量,因此需要将数据进行拆分,分散在各个数据节点上进行存储。在本申请中,所述数据拆分描述为将数据分为多个主分片。

分布式数据库需要考虑的最重要的问题之一是查询问题,需要将分散存储的数据进行通过高层次查询映射到每个数据节点的操作,最后通过网络进行数据汇总,完成查询结果,由于每个数据节点是物理上分开的,因此需要实时获取每个数据节点的可用状态。

本申请中,所述分布式数据库通过设置的一致性存储服务保持每个数据节点的可用状态,通过所述一致性存储服务获取每个所述数据节点的可用状态,进一步获取可用数据节点信息。

请参照图2所示,计划模块202,用于根据所述可用数据节点信息,将所述集群数据库的每一个协调点根据用户的查询语句生成的数据执行计划下发到每一个所述可用数据节点。

所述协调点用于设置执行计划并向每个所述数据节点下发,本申请采用循环备份的方式执行数据备份。

具体的,数据在在进行工作时,首先将数据分为多个主分片,将不同的主分片分别发送到不同的数据节点。进一步的,所述主分片生成一个或者多个副本,称为副分片,将所述幅分片保存在于所述主分片不同的数据节点中。

所述循环备份可以通过表1进行进一步说明:

表1

在表1中,主从分片即为主分片和从分片,从表1中可以看出,所述循环备份的特点是,每个数据节点中的数据分片是不一致的。

因此,所述循环备份的一种方式即,当数据节点1存储第一主分片时,备份第二主分片,当所述数据节点2存储第二主分片是,备份第三主分片,因此可以用如下公式表示:

主分片编号=i

副分片编号=i+1

其中,i表示数据节点的编号,i∈(1,n),且当i=n时,副分片=1。

当进行任务下发时,所述协调点将根据所述循环备份的特点进行任务分配,实现负载均衡。具体的,基于数据主分片的多副分片循环备份,所述协调点记录下发到每个所述可用数据节点的任务数。每次下发任务后增加每个数据节点的任务数,下发任务结束后减少每个可用数据节点任务数。即,数据输入时需要分别输入主分片和备分片,数据输出时,若无数据节点损坏,则直接读取每个数据节点中的主分片即可。

所述执行计划下发到每一个所述可用数据节点,包括:

所述协调点根据发送给每一个所述可用数据节点的执行计划,判断每个可用数据节点的负载情况。

根据所述负载情况确定每个所述可用数据节点下发执行计划包含的任务数。

具体的,通常情况下,所述数据节点的负载情况是较为均衡的,但是若有数据节点损坏,则负载不再均衡。

基于此,本申请设置的均衡方式是在循环备份的基础上,进行任务数量循环提高的方式进行。表2可以表现出本申请协调点下发任务的过程:

表2

由表2可以看出,所述协调点在SQL1中对第二个数据节点的任务下发多了一倍,因此判断其负载较大,在SQL2中则不再对第二数据节点增加任务,而是增加到第一数据节点,并在SQL3不再对第以数据节点和第二数据节点增加任务,对第三数据节点增加任务。

可以计算得知,所述第一数据节点任务数是1+2+1=4,第二数据节点的任务数是2+1+1=4,第四数据节点的任务数是1+1+2=4。由此可知损坏的第三节点的任务数平均分配到了第一、第二和第四数据节点,因此负载是均衡的。

当出现1个节点损坏时,可以通过调整下发给哪些节点来进行负载均衡,当出现多个节点损坏时,虽然可能无法做到完全均衡,但也能做到部分调整。

本申请结合循环备份的特征与协调点中设置的新的执行计划下发方式,实现了在分布式数据库的数据节点损坏一个或者多个后,可以最大程度的将该损坏的数据节点的负载均匀的分配到其他数据节点,达到均衡数据节点负载的效果同时,增加了分布式数据系统的工作效率。

技术分类

06120115892064