一种数据均衡的方法、装置、查询系统及存储介质与流程

文档序号:26050479发布日期:2021-07-27 15:25阅读:80来源:国知局
一种数据均衡的方法、装置、查询系统及存储介质与流程

本发明涉及数据存储领域,尤其是涉及一种数据均衡的方法、装置、查询系统及存储介质。



背景技术:

elasticsearch作为当前非常流行的近实时处理的搜索查询引擎,能进行海量数据的存储和数据查询处理。

而对于海量数据的存储,通常需要考虑数据的均衡分布情况。在现有技术中,基于elasticsearch的存储查询处理系统一般通过控制当单个索引大小到达某个值时,再新建一个新的索引的方式来达到数据均衡的目标。然而,在数据查询时,上述处理方式需要对所有新建的索引都进行查询,在海量数据规模下,需要查询的数据量巨大,这将会消耗系统的大量资源,并且查询效率也较低。

鉴于此,如何实现数据均衡成为一个亟待解决的技术问题。



技术实现要素:

本发明提供一种数据均衡的方法、装置、查询系统及存储介质,用以解决现有技术中存在的上述技术问题。

第一方面,为解决上述技术问题,本发明实施例提供的一种数据均衡的方法,应用于基于实时搜索引擎elasticsearch的集群,所述集群包括多个节点,设置在所述集群中的索引包括多个分片,所述分片被配置在所述节点中,接入所述索引的数据被存储在对应的分片中,所述集群中的索引按索引类型及时间段命名,所述方法的技术方案如下:

根据当前创建的新索引的索引名,确定所述新索引的索引类型;其中,一种所述索引类型对应一种类型的业务数据;

在每次为所述新索引的新分片配置节点时,统计属于所述新索引的索引类型的分片在所述集群中各节点的分布数量;

将所述新分片配置在所述分布数量最少的节点中,直至完成所述新索引包括的所有分片的配置。

一种可能的实施方式,所述新索引为所述索引类型下创建的第一个索引时,所述新索引是实时创建的;

所述新索引为所述索引类型下创建的非所述第一个索引时,所述新索引是在所述新索引的索引类型中的上一个时间段中创建的。

一种可能的实施方式,统计属于所述新索引的索引类型的分片在所述集群中各节点的分布数量,包括:

从所述集群中获取属于所述新索引的索引类型的索引的集合;

统计所述集合对应的每个节点中属于所述新索引的索引类型的分片总数;

将所述集合对应的各节点中属于所述新索引的索引类型的分片总数,确定为对应节点的所述分布数量;

将所述集群中节点不属于所述集合对应的节点的所述分布数量确定为0。

一种可能的实施方式,将所述新分片配置在分布数量最少的节点中,包括:

对所述集群中所有节点的所述分布数量进行升序排序;

将新分片配置在升序排序中的首个分布数量对应的节点中。

一种可能的实施方式,将所述新分片配置在分布数量最少的节点中,包括:

对所述集群中所有节点的所述分布数量进行降序排序;

将新分片配置在降序排序中的最后一个分布数量对应的节点中。

一种可能的实施方式,所述方法还包括:

定期检查所述集群中每种索引类型的均衡性;其中,所述均衡性表征所述集群中对应索引类型的分片,在各节点的分布数量是否均衡;

在确定任一种索引类型的分片分布不均衡时,调整所述任一种索引类型的分片分布,直至均衡。

一种可能的实施方式,定期检查所述集群中每种索引类型的均衡性,包括:

定期统计所述每种索引类型在所述集群中平均每个节点的分片平均数,以及所述每个节点中实际分布的所述每种索引类型的分片总数;

针对所述每种索引类型:计算所述每个节点对应的所述分片总数与所述分片平均数的差值,所有节点中若最大的差值与最小的差值的差大于设定阈值,确定对应索引类型的分片分布不均衡。

一种可能的实施方式,在确定任一种索引类型的分片分布不均衡时,调整所述任一种索引类型的分片分布,直至均衡,包括:

对于所述分片分布不均衡的所述任一种索引类型,将对应最大的差值对应节点中的一个分片迁移到最小的节点中,并再次判断所述任一种业务类的分片分布是否均衡,不均衡时再次迁移分片,直至确定所述任一种业务类的分片分布均衡。

第二方面,本发明实施例提供了一种查询系统,所述查询系统中的索引的分片是采用如第一方面所述的方法进行数据均衡的,所述查询系统包括:

获取单元,用于获取包含待查询业务类型及时间窗口的查询信息;

查询单元,用于根据所述待查询业务类型确定对应的索引类型,并从所述索引类型对应的索引中筛选出在所时间窗口内的目标索引;

返回单元,用于将所述目标索引作为查询结果返回给所述查询信息对应的用户。

第三方面,本发明实施例还提供一种用于数据均衡的装置,包括:

至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上述第一方面所述的方法。

第四方面,本发明实施例还提供一种可读存储介质,包括:

存储器,

所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如上述第一方面所述的方法。

通过本发明实施例的上述一个或多个实施例中的技术方案,本发明实施例至少具有如下技术效果:

在本发明提供的实施例中,通过让集群中的索引按索引类型及时间段命名,并根据当前创建的新索引的索引名,确定新索引的索引类型;其中,一种索引类型对应一种类型的业务数据;在每次为新索引的新分片配置节点时,统计属于新索引的索引类型的分片在集群中各节点的分布数量;将新分片配置在分布数量最少的节点中,直至完成新索引包括的所有分片的配置,这样可以让索引对应的分片均衡的分布在集群的各节点中,由于分片是承载接入数据的基本单元,因此通过让分片均衡分布在集群的节点中,也就让接入的数据能均衡的分布在集群的节点中。由于接入数据是按对应的业务类型、时间段均衡的分布在集群中的,因此使用此方案存储数据或配置分片的查询系统,只需根据查询条件中对应的业务类型及指定时间,在该业务类型中与指定时间对应的时间段内进行查询,而不必像现有技术中那样需要在所有数据中进行查询,从而能够进一步的提高查询效率。

附图说明

图1为本发明实施例提供的一种数据均衡方法的流程图;

图2为本发明实施例提供的在集群的索引库中创建索引名的示意图;

图3为本发明实施例提供的一种查询系统的结构示意图。

具体实施方式

本发明实施列提供一种数据均衡的方法、装置、查询系统及存储介质,以解决现有技术中存在的上述技术问题。

实时搜索引擎(elasticsearch,es或elastic)本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个elastic实例。单个elastic实例称为一个节点(node)。一组节点构成一个集群(cluster)。elastic数据管理的顶层单位成为index(索引),它是单个数据库的同义词。index里面单条的记录称为文档(document)。许多条document构成了一个index。

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

请参考图1,本发明实施例提供一种数据均衡的方法,应用于基于elasticsearch的集群,集群包括多个节点,设置在集群中的索引包括多个分片,分片被配置在节点中,接入索引的数据被存储在对应的分片中,集群中的索引按索引类型及时间段命名,该方法的处理过程如下:

步骤101:根据当前创建的新索引的索引名,确定新索引的索引类型;其中,一种索引类型对应一种类型的业务数据。

在本发明提供的实施例中,当前创建的索引被称为新索引,其实质还是集群中的一个索引,为了区别于已创建的索引而将当前创建的索引称为新索引,索引名中的时间段可以是按小时、周、月等进行划分,如是按周进行划分,那一个索引对应数据的就是某种业务类型在某一周内的数据。

请参见图2为本发明实施例提供的在集群的索引库中创建索引名的示意图。

在图2中的索引库包括n种索引类型(索引类型1~索引类型n),以在索引类型1中创建一个新索引“index_索引类型1_时间段n-3”为例,根据当前创建的新索引的索引名“index_索引类型1_时间段n-3”可以确定对应的索引类型为索引类型1,假设索引类型1对应的业务数据是人的图像数据,接入索引类型1的数据都是人的图像数据,而接入新索引“index_索引类型1_时间段n-3”的数据即为时间段为时间段n-3的人的图像数据,假设时间段n-3为2020年第30周(记为2020.30),索引类型1记为person,则新索引“index_索引类型1_时间段n-3”的索引名可以记为“index_person_2020.30”。

一种可能的实施方式,新索引为索引类型下创建的第一个索引时,新索引是实时创建的;新索引为索引类型下创建的非第一个索引时,新索引是在新索引的索引类型中的上一个时间段中创建的。

例如,仍以图2为例,当前在集群中新建索引类型为索引类型1,同时在该索引类型1中新建第一个索引,此时第一个索引即为新索引,对应的索引名为“index_索引类型1_时间段1”。

当有数据接入“index_索引类型1_时间段1”后,可以创建下一个时间段的索引,由于下一个时间段的索引不是索引类型1下的第一个索引,所以在有数据接入“index_索引类型1_时间段1”创建,对应的索引名为“index_索引类型1_时间段2”。

当新索引为索引类型下创建的非第一个索引时,在新索引的索引类型中的上一个时间段中创建新索引,由于不需在接入新索引的数据时才创建新索引,是因此能够保证业务的稳定性。

需要说明的是,上述所述的创建索引包括创建对应的索引名及分片,每个索引包括的分片数是相同的,可以预先设置该分片数。创建分片需要将分片配置到集群中的节点中,关于配置分配可以参见步骤102-步骤103,在此暂不做介绍。

由于在不同业务场景(一种业务场景对应一种业务类型)下,其每天或每周的时空数据量存在较大的差异,而相同业务场景下的每周之间的数据量均相当,因此采用本发明中的技术方案,将索引按与有业务类型对应的索引类型进行划分,并在同索引类型下按时间段再次划分,形成包含索引类型和时间段的索引名,使得在接入的数据可以按不同业务类型下的时间段进行存储,且同索引类型下的每个索引存储的数据量相同,这样不仅能为数据均衡存储在集群的节点中做好准备,还能便于按业务类型、时间段进行检索,使得检索的范围减小了,从而提高检索效率。

在确定新索引的索引类型后,便可执行步骤102。

步骤102:在每次为新索引的新分片配置节点时,统计属于新索引的索引类型的分片在集群中各节点的分布数量。

统计属于新索引的索引类型的分片在集群中各节点的分布数量,可以是直接对集群中各节点中属于新索引的索引类型的分片总数量进行统计,也可以采用下列方式进行统计:

从集群中获取属于新索引的索引类型的索引的集合;统计集合对应的每个节点中属于新索引的索引类型的分片总数;将集合对应的各节点中属于新索引的索引类型的分片总数,确定为对应节点的分布数量;将集群中节点不属于集合对应的节点的分布数量确定为0。

仍以图2为例,假设当前创建的新索引的索引名为“index_索引类型1_时间段n”,根据该索引名可以确定新索引的索引类型为索引类型1,从集群中获取属于索引类型1的索引的集合:“index_索引类型1_时间段1”~“index_索引类型1_时间段n-1”,假设此集合对应的节点包括节点1、节点2、节点3、节点4,集群包括节点1~节点6共6个节点,统计此集合对应的每个节点中属于索引类型1的分片总数(节点1~节点4的分片总数分别对应分片总数1~分片总数4),将分片总数1~分片总数4分别确定为索引类型1中的分片在节点1~节点4对应的分布数量。而节点5和节点6由于不属于索引类型1对应集合中的节点中,因此可以直接确定索引类型1中的分片在节点5和节点6对应的分布数量为0。通过上述方式,可以不必对集群中的每个节点中包含新索引的索引类型的分片数量进行统计,从而可以有效地减小统计量。

在统计出新索引的索引类型的分片在集群中各节点的分布数量后,便可执行步骤103。

步骤103:将新分片配置在分布数量最少的节点中,直至完成新索引包括的所有分片的配置。

可以采用下列两种方式将新分片配置在分布数量最少的节点中:

第一种:对集群中所有节点的分布数量进行升序排序或降序排序;将新分片配置在升序排序中的首个分布数量对应的节点中。

第二种:对集群中所有节点的分布数量进行降序排序;将新分片配置在降序排序中的最后一个分布数量对应的节点中。

例如,仍以图2为例,前创建的新索引的索引名为“index_索引类型1_时间段n”,每个索引可以包括3个分片,在对新索引的第一个分片进行配置时(此时第一个分片为新分片),统计出索引类型1的分片在集群中分布在节点1~节点6上,对应的分布数量依次记为n1~n6。将它们按照升序排序,排序结果为n5=n6<n1<n2<n4<n3,排序结果中首个分布数量n5对应的节点5和节点6即为分布数量最少的节点,将新索引的新分片(第一个分片)配置在节点5或节点6中的任一个即可(假设是配置在节点5中)。

之后,对新索引的第二分片进行配置(此时第二个分片为新分片),重复上述第一个分片配置中的统计、排序过程,得到对应的排序结果为:n6<n5<n1<n2<n4<n3,排序结果中首个分布数量n6对应的节点6即为分布数量最少的节点,将新索引的新分片(第二个分片)配置在节点6中。

最后,对新索引的第三分片进行配置(此时第三个分片为新分片),重复上述第一个分片配置中的统计、排序过程(此时排序采用降序),得到对应的排序结果为:n3>n4>n2>n5>n6>n1,排序结果中最后一个分布数量n1对应的节点1即为分布数量最少的节点,将新索引的新分片(第三个分片)配置在节点1中。至此,完成新索引“index_索引类型1_时间段n”的创建。接入该新索引的数据可以存储在其包括的3个分片中,直至存满,或接入的数据为下一个时间段的数据。

在本发明提供的实施例中,通过让集群中的索引按索引类型及时间段命名,并根据当前创建的新索引的索引名,确定新索引的索引类型;其中,一种索引类型对应一种类型的业务数据;在每次为新索引的新分片配置节点时,统计属于新索引的索引类型的分片在集群中各节点的分布数量;将新分片配置在分布数量最少的节点中,直至完成新索引包括的所有分片的配置,这样可以让索引对应的分片均衡的分布在集群的各节点中,由于分片是承载接入数据的基本单元,因此通过让分片均衡分布在集群的节点中,也就让接入的数据能均衡的分布在集群的节点中。由于接入数据是按对应的业务类型、时间段均衡的分布在集群中的,因此使用此方案存储数据或配置分片的查询系统,只需根据查询条件中对应的业务类型及指定时间,在该业务类型中与指定时间对应的时间段内进行查询,而不必像现有技术中那样需要在所有数据中进行查询,从而能够进一步的提高查询效率。

一种可能的实施方式,还可以定期检查集群中每种索引类型的均衡性;其中,均衡性表征集群中对应索引类型的分片,在各节点的分布数量是否均衡;在确定任一种索引类型的分片分布不均衡时,调整任一种索引类型的分片分布,直至均衡。

定期检查集群中每种索引类型的均衡性,可以采用下列方式实现:

定期统计每种索引类型在集群中平均每个节点的分片平均数,以及每个节点中实际分布的每种索引类型的分片总数;针对每种索引类型:计算每个节点对应的分片总数与分片平均数的差值,所有节点中若最大的差值与最小的差值的差大于设定阈值,确定对应索引类型的分片分布不均衡。

定期统计每种索引类型在集群中平均每个节点的分片平均数,可以先统计出每种索引在集群中包括索引的索引总数,根据预先设置的每个索引包括的分片数,确定每种索引在集群中包括的总的分片数,用总的分片数除以集群中节点的总数,得到每种索引类型在集群中平均每个节点的分片平均数。

例如,以图2为例,假设集群包括3个节点(节点1~节点3),每个索引包括3个分片,定期统计确定集群中索引类型1~索引类型n各自包含的索引总数(依次记为s1~sn),进而可以得到索引类型1~索引类型n各自对包括的总的分片数为3s1~3sn。这样就可以统计出索引类型1~索引类型n在集群中平均每个节点的分片平均数为s1~sn。

如索引类型1为例,索引类型1的分片在节点1~节点3中的分片平均数为s1,同时还统计出索引类型1的分片在节点1~节点3中实际的分片总数依次为p11~p13。对于这3个节点,分别计算各自的分片总数与分片平均数的差值:p11-s1、p12-s1、p13-s1。从这三个差值中选取最大的差值(假设为p12-s1)及最小的差值(假设为p11-s1),判断最大的差值(p12-s1)与最小的差值(p11-s1)的差十分大于设定阈值(假设为1),即判断(p12-s1)-(p11-s1)是否大于1,若为是确定索引类型1的分片分布不均衡,需要通过迁移分片来是其分片分布均衡。最大的差值(p12-s1)与最小的差值(p11-s1)的差十分小于等于设定阈值,则确定索引类型1的分片分布均衡,无需迁移分配。

需要说明的是,上述举例列举的节点数非常少,一种索引类型对应的数据量较少,在实际应用中一个集群包括的节点数通常是非常多的,此时相应的数据量也就较大,因此在选取最大的差值和最小的差值是可以通过排序的方式选取。

一种可能的实施方式,在确定任一种索引类型的分片分布不均衡时,调整任一种索引类型的分片分布,直至均衡,可以采用下列方式实现:

对于分片分布不均衡的任一种索引类型,将对应最大的差值对应节点中的一个分片迁移到最小的节点中,并再次判断任一种业务类的分片分布是否均衡,不均衡时再次迁移分片,直至确定任一种业务类的分片分布均衡。

例如,以索引类型1为例,通过前面的方式确定出索引类型1的分片分布不均衡,且确定最大的差值对应的节点为节点3,最小的差值对应的节点为节点8,此时将节点3中的一个分片迁移到节点8中。

然后再次检查索引类型1的均衡性,确定索引类型1的分片分布仍不均衡,确定最大的差值对应的节点为节点4,最小的差值对应的节点为节点5,此时将节点4中的一个分片迁移到节点5中。

之后,再次检查索引类型1的均衡性,确定索引类型1的分片分布均衡,此时便无需在对索引类型1的分配进行迁移。同样的方式,可以对其它索引类型的分片分布不均衡的情况,进行分片迁移,使之最终均衡。

在本发明提供的实施例中,通过定期检查集群中每种索引类型的均衡性,并在确定任一种索引类型的分片分布不均衡时,调整任一种索引类型的分片分布,直至均衡。可以防止因手动迁移分片等原因造成不均衡的情况出现。

基于同一发明构思,本发明一实施例中提供一种查询系统,该查询系统索引的分片是采用如上所述的方法进行数据均衡,其中的数据均衡方法的具体实施方式可参见方法实施例部分的描述,重复之处不再赘述,请参见图3,该查询系统包括:

获取单元301,用于获取包含待查询业务类型及时间窗口的查询信息;

查询单元302,用于根据待查询业务类型确定对应的索引类型,并从索引类型对应的索引中筛选出所在所时间窗口内的目标索引;

返回单元303,用于将目标索引作为查询结果返回给查询信息对应的用户。

例如,用户输入的查询信息(或查询条件)为“人物女2020年3月”因此可以根据“人物”确定对应的业务类型为“人”、时间为2020年3月,假设集群中一个索引对应的时间段为周,则可以确定3月对应的时间段为第9周到12周,因此可以根据上述时间确定对应的时间窗口为2020.9~2020.12,进而可以确定目标索引为index_人_2020.9~index_人_2020.12,在该目标索引中查询人为女的结果,将查询结果返回给查询信息对应的用户。

基于同一发明构思,本发明实施例中提供了一种数据均衡的装置,包括:至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上所述的数据均衡方法。

基于同一发明构思,本发明实施例还提一种可读存储介质,包括:

存储器,

所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如上所述的数据均衡方法。

本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1