集群中容器的迁移方法、装置、设备和介质与流程

文档序号:24305393发布日期:2021-03-17 00:58阅读:75来源:国知局
本公开涉及数据库
技术领域
:,尤其涉及集群中容器的迁移方法、装置、设备和介质。
背景技术
::集群中的机器数量并不是一成不变的,随着业务发展的不断发展以及服务要求的不断提高,可通过对集群进行扩容的方式来提升服务性能,例如,对于数据库集群,可通过增加机器的方式实现对数据库集群的扩容,从而提升数据库集群的查询性能。在集群扩容后,集群中的资源分配情况发生变化,需要进行资源迁移。相关技术中,在集群扩容之后,集群中需要进行大量资源移动,资源迁移所需要的时间较多,从而导致集群可用性不高,因此,在集群扩容后,如何完成集群的资源迁移是目前亟需解决的技术问题。技术实现要素:本公开提供一种集群中容器的迁移方法、装置、设备和介质,以至少解决相关技术中集群中需要进行大量数据移动,数据迁移所需要的时间较多,从而导致集群可用性不高的问题。本公开的技术方案如下:根据本公开实施例的第一方面,提供一种集群中容器的迁移方法,所述集群包括至少一机器,所述机器用于承载至少一容器,其中,所述容器用于存储数据;所述方法包括:针对每个所述容器,获取所述容器的第一归属标识和第二归属标识;其中,所述第一归属标识用于标识所述容器在集群中所归属的第一机器,所述第二归属标识用于标识所述容器在扩容后集群中所归属的第二机器,所述容器被承载在所述第一机器上;比较所述第一归属标识和所述第二归属标识;在所述第一归属标识和所述第二归属标识不相同的情况下,迁移所述容器至所述第二机器。在本公开的一个实施例中,所述获取所述容器的第一归属标识和第二归属标识,包括:获取所述集群中机器的第一数量和扩容后集群中机器的第二数量;根据所述第一数量和所述容器的容器标识,确定所述容器的第一归属标识,以及根据所述第二数量和所述容器标识,确定所述容器的第二归属标识。在本公开的一个实施例中,所述根据所述第一数量和所述容器标识,确定所述容器的第一归属标识,以及根据所述第二数量和所述容器标识,确定所述容器的第二归属标识,包括:利用所述容器标识对所述第一数量取余,得到第一余数值,并根据所述第一余数值确定所述容器的第一归属标识;以及利用所述容器标识对所述第二数量取余,得到第二余数值,并根据所述第二余数值确定所述容器的第二归属标识。在本公开的一个实施例中,所述根据所述第一余数值确定所述容器的第一归属标识,包括:针对所述集群中的每个机器,利用所述机器的标识对所述第一数量取余,得到第三余数值;若所述第三余数值和第一余数值相同,则将所述机器作为所述第一机器,并将所述第一机器的标识作为所述第一归属标识。在本公开的一个实施例中,还包括:在所述第一归属标识和所述第二归属标识相同的情况下,将所述容器继续承载在所述第一机器上。在本公开的一个实施例中,还包括:生成所述容器的容器标识与第二归属标识的对应关系。在本公开的一个实施例中,在所述生成所述容器的容器标识与第二归属标识的对应关系之后,还包括:接收数据查询请求,其中,所述数据查询请求包括第一数据标识;根据所述第一数据标识和所述集群中所述容器的数量,确定所述第一数据标识所对应的第一容器的第一容器标识;根据所述对应关系,确定与所述第一容器标识对应的第三归属标识,其中,所述第三归属标识用于标识所述第一容器在扩容后集群中所归属的第三机器;从所述第三机器上的所述第一容器中,获取与所述第一数据标识对应的数据。在本公开的一个实施例中,在所述生成所述容器的容器标识与第二归属标识的对应关系之后,还包括:接收数据存储请求,其中,所述数据存储请求包括待存储数据的第二数据标识;根据所述第二数据标识和所述集群中所述容器的数量,确定用于存储所述待存储数据的第二容器的第二容器标识;根据所述对应关系,确定与所述第二容器标识对应的第四归属标识,其中,所述第四归属标识用于标识所述第二容器在扩容后集群中所归属的第四机器;存储所述待存储数据至所述第四机器上的所述第二容器中。根据本公开实施例的第二方面,提供一种集群中容器的迁移装置,所述集群包括至少一机器,所述机器用于承载至少一容器,其中,所述容器用于存储数据;所述装置包括:第一获取模块,被配置为针对每个所述容器,获取所述容器的第一归属标识和第二归属标识;其中,所述第一归属标识用于标识所述容器在集群中所归属的第一机器,所述第二归属标识用于标识所述容器在扩容后集群中所归属的第二机器,所述容器被承载在所述第一机器上;比较模块,被配置为比较所述第一归属标识和所述第二归属标识;迁移模块,被配置为在所述第一归属标识和所述第二归属标识不相同的情况下,迁移所述容器至所述第二机器。在本公开的一个实施例中,所述第一获取模块,包括:获取子模块,被配置为获取所述集群中机器的第一数量和扩容后集群中机器的第二数量;确定子模块,被配置为根据所述第一数量和所述容器的容器标识,确定所述容器的第一归属标识,以及根据所述第二数量和所述容器标识,确定所述容器的第二归属标识。在本公开的一个实施例中,所述确定子模块,包括:第一确定单元,被配置为利用所述容器标识对所述第一数量取余,得到第一余数值,并根据所述第一余数值确定所述容器的第一归属标识;以及第二确定单元,被配置为利用所述容器标识对所述第二数量取余,得到第二余数值,并根据所述第二余数值确定所述容器的第二归属标识。在本公开的一个实施例中,所述第一确定单元,具体被配置为:针对所述集群中的每个机器,利用所述机器的标识对所述第一数量取余,得到第三余数值;若所述第三余数值和第一余数值相同,则将所述机器作为所述第一机器,并将所述第一机器的标识作为所述第一归属标识。在本公开的一个实施例中,还包括:处理模块,被配置为在所述第一归属标识和所述第二归属标识相同的情况下,将所述容器继续承载在所述第一机器上。在本公开的一个实施例中,还包括:生成模块,被配置为生成所述容器的容器标识与第二归属标识的对应关系。在本公开的一个实施例中,还包括:第一接收模块,被配置为接收数据查询请求,其中,所述数据查询请求包括第一数据标识;第一确定模块,被配置为根据所述第一数据标识和所述集群中所述容器的数量,确定所述第一数据标识所对应的第一容器的第一容器标识;第二确定模块,被配置为根据所述对应关系,确定与所述第一容器标识对应的第三归属标识,其中,所述第三归属标识用于标识所述第一容器在扩容后集群中所归属的第三机器;第二获取模块,被配置为从所述第三机器上的所述第一容器中,获取与所述第一数据标识对应的数据。在本公开的一个实施例中,还包括:第二接收模块,被配置为接收数据存储请求,其中,所述数据存储请求包括待存储数据的第二数据标识;第三确定模块,被配置为根据所述第二数据标识和所述集群中所述容器的数量,确定用于存储所述待存储数据的第二容器的第二容器标识;第四确定模块,被配置为根据所述对应关系,确定与所述第二容器标识对应的第四归属标识,其中,所述第四归属标识用于标识所述第二容器在扩容后集群中所归属的第四机器;存储模块,被配置为存储所述待存储数据至所述第四机器上的所述第二容器中。根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现本公开第一方的集群中容器的迁移方法。根据本公开实施例的第四方面,提供一种计算机程序产品,该计算机程序由电子设备的处理器执行时,使得电子设备能够执行如前所述的集群中容器的迁移方法。本公开的实施例提供的技术方案至少带来以下有益效果:在集群扩容后,针对集群中的每个容器,获取容器的第一归属标识和第二归属标识,并将第一归属标识和第二归属标识进行比较,在第一归属标识和第二归属标识不相同的情况下,迁移容器至第二机器上。由此,在集群扩容后,通过比较每个容器扩容前后所归属的机器,即可确定该容器是否需要迁移,并在确定容器需要迁移时,将容器迁移到对应的机器上,由于容器用于存储数据,从而通过迁移容器即可快速实现集群扩容后的数据移动,减少了机器扩容后数据迁移的时间,提高了集群数据迁移的效率,从而提高了集群的可用性。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。图1是根据一示例性实施例示出的一种集群中容器的迁移方法的流程图。图2是根据一示例性实施例示出的另一种集群中容器的迁移方法的流程图。图3是根据一示例性实施例示出的另一种集群中容器的迁移方法的流程图。图4是根据一示例性实施例示出的另一种集群中容器的迁移方法的流程图。图5是根据一示例性实施例示出的另一种集群中容器的迁移方法的流程图。图6是clickhouse数据库集群在分布式文件系统集群上的架构示意图。图7是根据一示例性实施例示出的一种集群中容器的迁移装置的框图。图8是根据一示例性实施例示出的另一种集群中容器的迁移装置的框图。图9是根据一示例性实施例示出的一种用于集群扩容时容器的分配的电子设备的框图。具体实施方式为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。图1是根据一示例性实施例示出的一种集群中容器的迁移方法的流程图,如图1所示,该集群中容器的迁移方法包括以下步骤。在步骤s11中,针对每个容器,获取容器的第一归属标识和第二归属标识;其中,第一归属标识用于标识容器在集群中所归属的第一机器,第二归属标识用于标识容器在扩容后集群中所归属的第二机器,容器被承载在第一机器上。可以看出,第一归属标识标识的是集群未扩容(也即扩容前)时容器所归属的第一机器。本公开实施例的集群中容器的迁移方法的执行主体可以为集群中容器的迁移装置,本实施的集群中容器的迁移装置用于对集群中的机器扩容进行管理,该集群中的容器的迁移装置可以配置在集群中的任意机器上,该机器可以为电子设备,电子设备可以包括终端设备以及服务器,本实施例对电子设备不作具体限定。本实施例中,一个集群由一个或者多个机器组成,每个机器对应一个节点,也可以说,一个集群就是由一个或者多个节点组织在一起,并基于集群提供对应业务服务。本实施例中的容器是一种虚拟的容器,该容器也可以称为bucket(桶),本实施例中的容器用于存储集群中的业务数据。在步骤s12中,比较第一归属标识和第二归属标识。在步骤s13中,在第一归属标识和第二归属标识不相同的情况下,迁移容器至第二机器。在本实施例中,第一归属标识标识的是集群未扩容(也即扩容前)时容器所归属的第一机器,第二归属标识标识的是集群扩容后容器所归属的第二机器。若两个标识不同,说明第一机器、第二机器为不同机器,此时需要迁移容器到第二机器。例如,在没有对集群进行扩容之前,集群中机器的数量为50台,对于容器标识51的容器而言,该容器标识51所对应的第一归属标识为1,即容器标识为51的容器归属机器标识为1的机器。假设集群中的机器从50台,扩展到了100台机器,此时,该容器标识51所对应的第二归属标识为51,通过比较,可以看出,第一归属标识与第二归属标识不相同,此时,可确定在集群扩容之后,容器标识为51的容器需要迁移到归属标识为51的机器上。本公开实施例提供的集群中容器的迁移方法,在集群扩容后,针对集群中的每个容器,获取容器的第一归属标识和第二归属标识,并将第一归属标识和第二归属标识进行比较,在第一归属标识和第二归属标识不相同的情况下,迁移容器至第二机器上。由此,在集群扩容后,通过比较每个容器扩容前后所归属的机器,即可确定该容器是否需要迁移,并在确定容器需要迁移时,将容器迁移到对应的机器上,由于容器用于存储数据,从而通过迁移容器即可快速实现集群扩容后的数据移动,减少了机器扩容后数据迁移的时间,提高了集群数据迁移的效率,从而提高了集群的可用性。在本公开的一个实施例中,为了可以准确确定容器所归属的机器,本实施中的上述第一归属标识和第二归属标识可结合扩容前后的机器的数量进行确定,如图2所示,上述步骤11的一种可能的实现方式,可以包括:在步骤s21中,获取集群中机器的第一数量和扩容后集群中机器的第二数量。在步骤s22中,根据第一数量和容器的容器标识,确定容器的第一归属标识,以及根据第二数量和容器标识,确定容器的第二归属标识。本实施例中,结合集群扩容前后中机器的数量以及容器标识,准确确定出了扩容前后每个容器所归属的机器。在本公开的一个实施例中,为了使得集群中的容器可以尽量均匀的分布集群中的各个机器上,使得集群中各个机器的负载均衡,上述步骤s22的一种可能实现方式,如图3所示,可以包括:在步骤s31中,利用容器标识对第一数量取余,得到第一余数值,并根据第一余数值确定容器的第一归属标识。例如,扩容前集群中有50台机器,每台机器有一个机器标识id,从1到50;集群中包括199个容器,容器的容器标识id从1到199,对于集群中的每个容器,可将该容器的容器标识1对机器数50取余,得到余数值为1,根据余数值1,可以确定该容器标识1的容器归属于机器标识为1的机器。具体而言,针对每个容器而言,在获取对应容器的容器标识对机器总数进行取余,得到对应余数值后,可判断该余数值是否为零,如果该余数值不为零,则获取与余数值取值相同的机器标识,并将该机器标识所对应的机器,作为对应容器所归属的机器。在这里需要注意的是,对于容器标识50,100,150而言,其对机器数50取余,得到的余数值为0,因此,可将余数值为0的容器归属为机器标识50的机器。在本公开的一个实施例中,为了使得集群中的容器可以尽量均匀的分布集群中的各个机器上,根据第一余数值确定容器的第一归属标识的一种可能实现方式为:针对集群中的每个机器,利用机器的标识对第一数量取余,得到第三余数值;若第三余数值和第一余数值相同,则将机器作为第一机器,并将第一机器的标识作为第一归属标识。例如,扩容前集群中有50台机器,每台机器有一个机器标识id,从1到50;集群中包括199个容器,容器的容器标识id从1到199,对于集群中的每个容器,可将该容器的容器标识i(i的取值范围为1到199)对机器数50取余,得到对应取余值。以及,将机器标识均对机器数50取余,机器标识1至49,其各自对应的取余值均为其自身,对于机器标识50,其对应的取余值为0。对于任意一个容器标识i,如果容器标识i对应的余数值等于45,则容器标识i对应的容器归属于机器标识为45的机器。其中,可以理解的是,如果第三余数值和第一余数值不相同,则确定该容器不归属该机器。在步骤s32中,利用容器标识对第二数量取余,得到第二余数值,并根据第二余数值确定容器的第二归属标识。在本公开的一个实施例中,根据第二余数值确定容器的第二归属标识的一种可能的实现方式为:针对扩容后集群中的每个机器,利用机器的标识对第二数量取余,得到第四余数值,在第四余数值和第二余数值相同的情况下,则将该机器作为第二机器,并将第二机器的标识作为第二归属标识。例如,扩容后集群中有100台机器,每台机器有一个机器标识id,从1到100;集群中包括199个容器,容器的容器标识id从1到199,对于集群中的每个容器,比如容器标识1的容器而言,可将该容器的容器标识1对机器数100取余,得到第二余数值为1,对于机器标识1的机器,机器标识1对机器数100取余,得到第四余数值,第四余数值为通过比较第二余数值和第四余数值可知,第二余数值和第四余数值是相同的,此时,可以确定该容器标识1的容器归属于机器标识为1的机器。具体而言,在获取余数值后,可判断该余数值是否为零,如果该余数值不为零,则获取与余数值取值相同的机器标识,并将该机器标识所对应的机器,作为对应容器所归属的机器。在这里需要注意的时,对于容器标识100而言,其对机器数100取余,得到的余数值为0,因此,可将余数值为0的容器归属为机器标识100的机器。基于上述实施例的基础上,为了后续可在集群中进行准确的数据查询以及数据存储,在本公开的一个实施例中,该方法还可以:生成容器的容器标识与第二归属标识的对应关系。为了使得本领域的技术人员可以清楚的了解结合上述对于关系进行数据查询的过程,下面结合图4对数据查询过程进行详细描述。如图4所示,可以包括:在步骤s41中,接收数据查询请求,其中,数据查询请求包括第一数据标识。在步骤s42中,根据第一数据标识和集群中容器的数量,确定第一数据标识所对应的第一容器的第一容器标识。在本实施例中,根据第一数据标识和集群中容器的数量,确定第一数据标识所对应的第一容器的第一容器标识的一种可能实现方式为:根据第一数据标识,确定该第一数据标识对应的哈希值,将第一数据标识对应的哈希值对集群中的容器的数量取余,根据所得到的余数值,确定第一数据标识所对应的第一容器的第一容器标识。例如,假设机器中容器的数量为150,第一数据标识为1234567,通过计算确定该第一数据标识对应的哈希值为111111,通过将第一数据标识对应的哈希值对容器的数量进行取余,所得到的余数值为111,此时,可根据余数值和容器标识之间的对应关系,获取该余数值对应的容器标识。假设,根据对应关系所获取到的容器标识为111,此时,可确定第一数据标识所对应第一容器的第一容器标识为111。在步骤s43中,根据对应关系,确定与第一容器标识对应的第三归属标识,其中,第三归属标识用于标识第一容器在扩容后集群中所归属的第三机器。在步骤s44中,从第三机器上的第一容器中,获取与第一数据标识对应的数据。接上述举例,如果根据容器标识与第二归属标识之间的对应关系,确定第一容器标识对应的第三归属标识为35,此时,可确定第一容器标识所标识的容器在归属标识为35的机器上,此时,可从归属标识为35机器上的第一容器中,获取与第一数据标识对应的数据,并将所获取到的数据作为查询结果,并将查询结果输出,以方便用户查看到查询结果。本实施例,结合查询请求中的数据标识以及集群中容器的数量,确定第一数据标识所对应的第一容器的第一容器标识,并根据对应关系,确定与第一容器标识对应的第三归属标识,其中,第三归属标识用于标识第一容器在扩容后集群中所归属的第三机器,以及从第三机器上的第一容器中,获取与第一数据标识对应的数据。由此,在实现了在扩容后集群中查询数据。为了使得本领域的技术人员可以清楚了解结合上对应关系进行数据存储的过程,下面结合图5对数据存储的过程进行描述,如图5所示,该方法可以包括:在步骤s51中,接收数据存储请求,其中,数据存储请求包括待存储数据的第二数据标识。在步骤s52中,根据第二数据标识和集群中容器的数量,确定用于存储待存储数据的第二容器的第二容器标识。在本实施例中,根据第二数据标识和集群中容器的数量,确定用于存储待存储数据的第二容器的第二容器标识的一种可能的实现方式为:根据第二数据标识,确定该第二数据标识对应的哈希值,将第二数据标识对应的哈希值对集群中的容器的数量取余,根据所得到的余数值,确定用于存储待存储数据的第二容器的第二容器标识。例如,假设机器中容器的数量为100,待存储数据的第二数据标识为1234567,通过计算确定该第二数据标识对应的哈希值为111111,通过将第二数据标识对应的哈希值对容器的数量进行取余,所得到的余数值为11,此时,可根据余数值和容器标识之间的对应关系,获取该余数值对应的容器标识。假设,根据对应关系所获取到的容器标识为11,此时,可确定第一数据标识所对应的第一容器的第一容器标识为11。在步骤s53中,根据对应关系,确定与第二容器标识对应的第四归属标识,其中,第四归属标识用于标识第二容器在扩容后集群中所归属的第四机器。在步骤s54中,存储待存储数据至第四机器上的第二容器中。接上述举例,如果根据容器标识与第二归属标识之间的对应关系,确定第二容器标识11对应的第三归属标识为5,此时,可确定第二容器标识所标识的第二容器在归属标识为5的第四机器上,此时,可将待存储数据存储到第四机器上的第二容器中。在本实施例中,结合待存储数据的数据标识,以及扩容后集群中容器的数量,确定对应容器的容器标识,并根据容器标识与第二归属标识的对应关系,确定对应容器所归属的机器,并在所确定的机器上的对应容器中存储待存储数据。由此,实现了在扩容后集群中存储数据。其中,需要说明的是,本实施例的集群可以包括但不限于数据库集群,其中,数据库集群可以是由多台具有数据库的机器所组成的。本实施例的数据库可以为列式关系型数据库,也可以为行式关系型数据库。其中,本实施例以数据库为列式关系型数据库为例进行描述。其中,列式关系型数据库可以包括但不限于hbase、hive、clickhouse等,本实施例后续将以列式关系型数据库为clickhouse数据库为例对该实施例对示意性描述。通常,在不同应用场景中,所需要的数据库类型是不同的。对于联机分析处理(onlineanalyticalprocessing)olap场景中,在该场景中通常存在一张或是几张多列的大宽表,列数高达数百甚至数千列。对数据分析处理时,选择其中的少数几列作为维度列、其他少数几列作为指标列,然后,对整个数据表或某一个较大范围内的数据做聚合计算。对于该类场景中,为了极大的减低了索引成本,加速查询,可采用列式关系型数据库存储数据。其中,在列式关系数据库中,clickhouse是一种高性能的分析性高性能分析型sql数据库。clickhouse是俄罗斯yandex在2016年年开源的一个高性能分析型sql数据库,主要面向联机分析处理(onlineanalyticalprocessing)olap场景。开源之后,凭借优异的查询性能,受到业界的青睐。相关技术中,在集群中进行数据存储是,通常采用对机器数取余的方式来确定存储对应数据的机器,在集群进行库容后,即集群中的机器增加后,需要重新哈希关键字段,以确定对应关键字段的数据所保存的机器,并根据重新确定的机器进行数据迁移,这样将造成大量的数据迁移,造成集群扩容后,数据迁移所需要的时间较长,集群不能提供服务的时间较长,影响了集群的可用性。因此,本实施例的集群在对数据进行保存时,是通过对集群中的容器总数进行取余,和机器个数没任何关系,从而使得在集群扩容后,无需确定每个集群中每条数据的新容器。例如,集群中的容器总数为199,所有的hash值对199取余,并根据取余值,确定存储对应数据的容器,并将对应数据存在到集群中对应机器的容器中。例如,集群为clickhouse数据库集群,clickhouse数据库集群由多个机器组成,每个机器上设置有至少一个容器(即,bucket),对于clickhouse数据库集群而言,对于一个数据表可以按照关键字段进行哈希计算,以得到哈希值,并通过哈希值对clickhouse数据库集群中容器总数进行取余,并将相同关键字段对应的数据以列存储的方式存在对应机器的容器中。在本公开的一个实施例中,为了使得集群中的机器中存储的数据比较均衡,本实施例容器的数量可以为质数,即集群中容器的总数可以为质数。其中,集群中容器的数量可以任意质数,例如,容器的数量可以为199,177,457,499等,该实施例对集群中容器的数量不作限定,在实际应用中,可基于业务需求,设置集群中容器的数量。相关技术中,数据库集群中的计算节点,即数据库机器中负责计算的机器,该计算节点不仅需要负责计算,还需要负责数据存储,计算节点的负担比较重,数据库集群不容易管理,并且,数据库集群的扩展性受限。为了解决该问题,本公开通过将数据库集群中的数据存储和计算的分离,把数据的存储依托于分布式文件系统,从而使得数据库集群中的计算节点只保留计算能力,实现数据存储和数据计算分离,从而方便了对集群进行扩容,例如在实际应用场景中,可对集群中用于数据存储的部分进行扩容;在另一个实际场景中,可对集群中用于数据计算的部分进行扩容。因此,在公开的一个实施例中,机器上包括数据库集群的计算节点和分布式文件系统的数据节点,数据节点包括容器,本实施例中的集群中容器的迁移方法由分布式系统中的主节点执行,可以理解的是,本实施例的分布式文件系统中的主节点,还用于管理分布式文件系统中的各个数据节点,并负责外部对文件的访问操作。本实施例中的分布式文件系统中的主节点还可以执行如下步骤:步骤a,获取计算节点的查询任务,其中,查询任务包括待查询数据的标识。其中,计算节点中的查询任务是由数据库集群中的代理节点(broker节点)对接收到的查询请求进行任务查分后发送的。步骤b,将查询任务发送给分布式文件系统,以获取分布式文件系统返回的查询响应,其中,查询响应表示待查询数据位于数据节点上。步骤c,将查询响应返回给计算节点,以便计算节点从数据存储节中的容器中获取待查询数据。为了使得本领域的技术人员清楚地了解本申请,下面结合图6对该实施例进行进一步描述。其中,图6中以数据库集群为clickhouse数据库集群为例进行描述,本实施中的clickhouse数据库集群在分布式文件系统集群上的架构示意图,如图6所示。在clickhouse数据库集群中主要涉及到三种角色的节点,分别为:主节点(master节点):负责管理整个clickhouse集群。代理节点(broker节点),其中,broker节点主要用于:负责接收查询请求,然后把查询拆分,发送到clickhouse集群中的每个计算节点中,每个计算节点计算完之后,把结果返回给broker节点,broker节点再做进一步的汇总,然后返回最终的查询结果。具体而言,broker节点中会配置一个计算节点的列表,broker节点接收到查询之后,对sql进行分析之后,这个查询sql对应的表的数据是分布式存储的,然后,对sql改写,把原来的表替换为计算节点中实际的表名,然后,把改写完之后的sql发给集群中的每个计算节点。例如,用户查询的sql是selectuidfromtestdb.test_tablewhereuid=123456。broker根据元信息,testdb.test_table在计算节点对应的表是testdb.test_table_local,然后就改写sql成为:selectuidfromtestdb.test_table_localwhereuid=123456,然后把这个sql发给集群中所有的计算节点,所有的计算节点都执行这个sql。计算节点(clickhouse(ch)节点),其中,计算节点主要用于:接收broker发送的子查询,然后读取对应的数据,完成计算,并把计算的结果返回给broker节点。其中,本实施例中的上述计算节点与上述实施例中的机器对应,一个机器对应一个计算节点。其中,本实施例中的计算节点所需要的数据是从同一台机器上的分布式存储系统集群中的数据节点中读取到的,这样可以提高计算节点读取数据的效率,进而可提高broker节点提高查询结果的效率。hdfs集群中有两个角色的节点:主节点(namenode):负责管理整个hdfs集群。数据节点(datanode(dn)):主要负责存储数据。该数据节点上设置有至少一个容器(bucket)。可以理解的是,本实施例clickhouse集群和hdfs集群部署在同一个集群,每台机器上同时启动clickhouse计算节点chn和hdfs的数据节点dnn,计算节点dnn计算所需要的数据从同一台机器的dnn读取。在本申请的一个实施例中,hdfs集群中的主节点,还可以用于集群扩容时容器的迁移进行管理,其中,主节点中对集群扩容时容器的的迁移进行管理具体描述此处不再赘述。在本申请的另一个实施例中,本实施例中的上述集群中容器的迁移方法的还可以由clickhouse集群中的主节点执行,当然在实际应用中,可以根据实际业务需求,确定集群中容器的迁移方法的执行主体,该实施例对此不作具体限定。作为一示例性的实施方式,为了使得clickhouse集群可以更加关注于数据分析,在由hdfs集群中的主节点对集群中容器的迁移进行管理的场景中。在hdfs集群中的主节点完成集群中容器的迁移管理后,如果clickhouse集群中的主节点接收到数据存储请求,clickhouse集群中的主节点与hdfs集群中的主节点进行通信交互,以将数据存储请求转发到hdfs集群中的主节点中。hdfs集群中的主节点对数据存储请求进行分析(例如:数据存储请求中携带数据标识),以得到数据存储请求中的待存储数据的数据标识,并根据数据标识,确定用于存储待存储数据的容器标识,并根据容器标识,确定与该容器标识对应的归属标识,并根据归属标识对应的机器,然后,将待存储数据存储到该机器上与容器标识对应的容器上。另外,在一些实施例中,如果clickhouse集群中的broker节点接收到数据查询请求后,clickhouse集群中的broker节点与hdfs集群中的主节点进行通信交互,以将数据查询请求转发到hdfs集群中的主节点中。hdfs集群中的主节点对数据查询请求进行分析(例如:数据存储请求中携带数据标识),以得到数据查询请求中的待查询数据的数据标识,并根据数据标识,确定用于存储待存储数据的容器标识,再根据容器标识和预先保存的容器标识和归属标识之间的对应关系,确定与该容器标识对应的归属标识,然后,将所确定出的归属标识和容器标识反馈给clickhouse集群中的broker节点。broker节点将查询请求以及容器标识发送到该归属标识所标识的机器上,该机器从与该容器标识对应的容器中获取查询数据,并将查询数据反馈到broker节点。在另一些实施例中,在hdfs集群中的主节点将容器标识与归属标识之间的对应关系同步到clickhouse集群中的broker节点上后,若broker节点接收到数据查询请求,可从数据查询请求中提取出待查询数据的数据标识,然后,根据预存的数据标识与容器标识之间的对应关系,确定出待查询数据的数据标识所对应的容器标识,然后,从预存的容器标识与归属标识之间的对应关系中,获取与该容器标识相匹配的归属标识,进而,broker节点将查询请求以及容器标识发送到该归属标识所标识的机器上。该机器从与该容器标识对应的容器中获取查询数据,并将查询数据反馈到broker节点。本实施例中的hdfs集群后续可以实现冷热数据分层存储,根据生成时间和读的频率,把热数据存储在solidstatedisk(固态硬盘,ssd),进一步提升常用查询性能,充分提高存储空间较小的ssd利用率。其中,需要说明的是,为了保证整个集群的高可用性,计算节点和数据节点都有多个副本。图7是根据一示例性实施例示出的一种集群中容器的迁移装置的框图。参照图7,该装置10包括第一获取模块110、比较模块120和迁移模块130,其中:第一获取模块110,被配置为针对每个容器,获取容器的第一归属标识和第二归属标识;其中,第一归属标识用于标识容器在集群中所归属的第一机器,第二归属标识用于标识容器在扩容后集群中所归属的第二机器,容器被承载在第一机器上。其中,本实施例中的集群包括至少一机器,机器用于承载至少一容器。其中,容器用于存储数据。比较模块120,被配置为比较第一归属标识和第二归属标识;迁移模块130,被配置为在第一归属标识和第二归属标识不相同的情况下,迁移容器至第二机器。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。本公开实施例的集群中容器的迁移装置,在集群扩容后,针对集群中的每个容器,获取容器的第一归属标识和第二归属标识,并将第一归属标识和第二归属标识进行比较,在第一归属标识和第二归属标识不相同的情况下,迁移容器至第二机器上。由此,在集群扩容后,通过比较每个容器扩容前后所归属的机器,即可确定该容器是否需要迁移,并在确定容器需要迁移时,将容器迁移到对应的机器上,由于容器用于存储数据,从而通过迁移容器即可快速实现集群扩容后的数据移动,减少了机器扩容后数据迁移的时间,提高了集群数据迁移的效率,从而提高了集群的可用性。基于上述图7所示的实施例的基础上,如图8所示,第一获取模块110可以包括:获取子模块111,被配置为获取集群中机器的第一数量和扩容后集群中机器的第二数量;确定子模块112,被配置为根据第一数量和容器的容器标识,确定容器的第一归属标识,以及根据第二数量和容器标识,确定容器的第二归属标识。在本公开的一个实施例中,如图8所示,上述确定子模块112可以包括:第一确定单元1121,被配置为利用容器标识对第一数量取余,得到第一余数值,并根据第一余数值确定容器的第一归属标识;以及第二确定单元1122,被配置为利用容器标识对第二数量取余,得到第二余数值,并根据第二余数值确定容器的第二归属标识。在本公开的一个实施例中,第一确定单元1121,具体被配置为:针对集群中的每个机器,利用机器的标识对第一数量取余,得到第三余数值;若第三余数值和第一余数值相同,则将机器作为第一机器,并将第一机器的标识作为第一归属标识。基于上述实施例的基础上,如图8所示,该装置还可以包括:处理模块140,被配置为在第一归属标识和第二归属标识相同的情况下,将容器继续承载在第一机器上。基于上述实施例的基础上,如图8所示,该装置还可以包括:生成模块150,被配置为生成容器的容器标识与第二归属标识的对应关系。基于上述实施例的基础上,如图8所示,该装置还可以包括:第一接收模块160,被配置为接收数据查询请求,其中,数据查询请求包括第一数据标识;第一确定模块170,被配置为根据第一数据标识和集群中容器的数量,确定第一数据标识所对应的第一容器的第一容器标识;第二确定模块180,被配置为根据对应关系,确定与第一容器标识对应的第三归属标识,其中,第三归属标识用于标识第一容器在扩容后集群中所归属的第三机器;第二获取模块190,被配置为从第三机器上的第一容器中,获取与第一数据标识对应的数据。基于上述实施例的基础上,如图8所示,该装置还可以包括:第二接收模块200,被配置为接收数据存储请求,其中,数据存储请求包括待存储数据的第二数据标识;第三确定模块210,被配置为根据第二数据标识和集群中容器的数量,确定用于存储待存储数据的第二容器的第二容器标识;第四确定模块220,被配置为根据对应关系,确定与第二容器标识对应的第四归属标识,其中,第四归属标识用于标识第二容器在扩容后集群中所归属的第四机器;存储模块230,被配置为存储待存储数据至第四机器上的第二容器中。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。图9是根据一示例性实施例示出的一种用于集群扩容时容器的分配的电子设备的框图。如图9所示,上述电子设备300包括:存储器310及处理器320,连接不同组件(包括存储器310和处理器320)的总线330,存储器310存储有计算机程序,当处理器320执行程序时实现本公开实施例的集群中容器的迁移方法。总线330表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。电子设备300典型地包括多种电子设备可读介质。这些介质可以是任何能够被电子设备300访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。存储器310还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)340和/或高速缓存存储器350。电子设备300可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统360可以用于读写不可移动的、非易失性磁介质(图9未显示,通常称为“硬盘驱动器”)。尽管图9中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线330相连。存储器310可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。具有一组(至少一个)程序模块370的程序/实用工具380,可以存储在例如存储器310中,这样的程序模块370包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块370通常执行本公开所描述的实施例中的功能和/或方法。电子设备300也可以与一个或多个外部设备390(例如键盘、指向设备、显示器391等)通信,还可与一个或者多个使得用户能与该电子设备300交互的设备通信,和/或与使得该电子设备300能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口393进行。并且,电子设备300还可以通过网络适配器393与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图9所示,网络适配器393通过总线330与电子设备300的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。处理器320通过运行存储在存储器310中的程序,从而执行各种功能应用以及数据处理。其中,需要说明的是,前述对集群中容器的迁移方法实施例的解释说明也适用于本实施,此处不再赘述。本公开实施例提供的电子设备,在集群扩容后,针对集群中的每个容器,获取容器的第一归属标识和第二归属标识,并将第一归属标识和第二归属标识进行比较,在第一归属标识和第二归属标识不相同的情况下,迁移容器至第二机器上。由此,在集群扩容后,通过比较每个容器扩容前后所归属的机器,即可确定该容器是否需要迁移,并在确定容器需要迁移时,将容器迁移到对应的机器上,由于容器用于存储数据,从而通过迁移容器即可快速实现集群扩容后的数据移动,减少了机器扩容后数据迁移的时间,提高了集群数据迁移的效率,从而提高了集群的可用性。为了实现上述实施例,本公开还提出一种存储介质。当存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述的集群中容器的迁移方法。为了实现上述实施例,本公开还提供一种计算机程序产品,该计算机程序由服务器的处理器执行时,使得服务器能够执如前的集群中容器的迁移方法。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1