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

一种主题的动态分配方法及装置、电子设备、存储介质

文献发布时间:2024-04-18 20:01:55


一种主题的动态分配方法及装置、电子设备、存储介质

技术领域

本申请涉及数据处理技术领域,尤其涉及一种主题的动态分配方法及装置、电子设备、存储介质。

背景技术

目前Kafka集群作为主流消息中间件,在各大企业中均有应用。其中,在同一Kafka集群中通常会保存有不同类型的主题,但是这些主题会随着业务量的变化,而造成这些主题所属主机的资源利用率不均衡,以及导致个别主机负载过高,进而影响到Kafka集群整体的处理能力。因此合理地分配Kafka集群中的主题显得尤为重要。

在现有的技术中,主要通过操作人员手动查看Kafka集群中主机以及主题的资源使用情况,然后操作人员再根据主机以及主题的资源使用情况,分配Kafka集群中的主题。

由于主题分配的过程较为繁琐,通过人工的分配方式效率较低,并且也容易产生分配错误的问题。

发明内容

基于上述现有技术的不足,本申请提供了一种主题的动态分配方法及装置、电子设备、存储介质,以解决通过人工的分配方式效率较低的问题。

为了实现上述目的,本申请提供了以下技术方案:

本申请第一方面提供了一种主题的动态分配方法,包括:

周期性提取Kafka集群中的指标信息;其中,所述指标信息至少包括各个主题及其的业务量和各个主机及其对应的资源使用率;

根据各个所述主机对应的资源使用率,对各个所述主机进行分组,得到多组主机集合;

检测各个所述主题的业务量是否均匀的分区在各组所述主机集合中;

若各个所述主题的业务量不均匀的分区在各组所述主机集合中,则根据各个所述主题的业务量以及各组所述主机集合,生成重分配计划;

根据所述重分配计划,将各个所述主题重分配至目标主机集合中;其中,所述目标主机集合指代资源使用率较低的主机集合。

可选地,在上述的主题的动态分配方法中,所述检测各个所述主题的业务量是否均匀的分区在各组所述主机集合中之前,还包括:

从所述指标信息中提取各个所述主题对应的业务量占比;

根据各个所述主题的业务量占比,对各个所述主题进行加权,得到各个所述主题的权重;

根据各个所述主题的权重,对各个所述主题进行排名;

相应地,所述检测各个所述主题的业务量是否均匀的分区在各组所述主机集合中,包括:

按照各个所述主题的排名由高到低的顺序,依次检测各个所述主题的业务量是否均匀的分区在各组所述主机集合中。

可选地,在上述的主题的动态分配方法中,所述根据所述重分配计划,将各个所述主题重分配至目标主机集合中之后,还包括:

对所述Kafka集群进行资源检测;

当所述Kafka集群通过资源检测时,记录重分配结果;其中,所述重分配结果指代根据所述重分配计划,将各个所述主题重分配至目标主机集合中的结果;

当所述Kafka集群未通过资源检测时,返回执行周期性提取Kafka集群中的指标信息。

可选地,在上述的主题的动态分配方法中,所述周期性提取Kafka集群中的指标信息之后,还包括:

按照提取Kafka集群中的指标信息的时间,将所述指标信息写入至Kafka运行状态记录表中;

相应地,所述根据各个所述主机对应的资源使用率,对各个所述主机进行分组,得到多组主机集合,包括:

定期根据所述Kafka运行状态记录表中各个所述主机对应的资源使用率,对各个所述主机进行分组,得到多组主机集合。

可选地,在上述的主题的动态分配方法中,所述检测各个所述主题的业务量是否均匀的分区在各组所述主机集合中之后,还包括:

若各个所述主题的业务量均匀的分区在各组所述主机集合中,则结束重分配任务。

本申请第二方面提供了一种主题的动态分配装置,包括:

信息提取单元,用于周期性提取Kafka集群中的指标信息;其中,所述指标信息至少包括各个主题及其的业务量和各个主机及其对应的资源使用率;

主机分组单元,用于根据各个所述主机对应的资源使用率,对各个所述主机进行分组,得到多组主机集合;

检测单元,用于检测各个所述主题的业务量是否均匀的分区在各组所述主机集合中;

生成单元,用于若各个所述主题的业务量不均匀的分区在各组所述主机集合中,则根据各个所述主题的业务量以及各组所述主机集合,生成重分配计划;

分配单元,用于根据所述重分配计划,将各个所述主题重分配至目标主机集合中;其中,所述目标主机集合指代资源使用率较低的主机集合。

可选地,在上述的主题的动态分配装置中,还包括:

占比提取单元,用于从所述指标信息中提取各个所述主题对应的业务量占比;

加权单元,用于根据各个所述主题的业务量占比,对各个所述主题进行加权,得到各个所述主题的权重;

排名单元,用于根据各个所述主题的权重,对各个所述主题进行排名;

相应地,所述检测单元,包括:

按照单元,用于按照各个所述主题的排名由高到低的顺序,依次检测各个所述主题的业务量是否均匀的分区在各组所述主机集合中。

可选地,在上述的主题的动态分配装置中,还包括:

资源检测单元,用于对所述Kafka集群进行资源检测;

记录单元,用于当所述Kafka集群通过资源检测时,记录重分配结果;其中,所述重分配结果指代根据所述重分配计划,将各个所述主题重分配至目标主机集合中的结果;

执行单元,用于当所述Kafka集群未通过资源检测时,返回执行周期性提取Kafka集群中的指标信息。

可选地,在上述的主题的动态分配装置中,还包括:

写入单元,用于按照提取Kafka集群中的指标信息的时间,将所述指标信息写入至Kafka运行状态记录表中;

相应地,所述主机分组单元,包括:

分组单元,用于定期根据所述Kafka运行状态记录表中各个所述主机对应的资源使用率,对各个所述主机进行分组,得到多组主机集合。

可选地,在上述的主题的动态分配装置中,还包括:

结束单元,用于若各个所述主题的业务量均匀的分区在各组所述主机集合中,则结束重分配任务。

本申请第三方面提供了一种电子设备,包括:

存储器和处理器;

其中,所述存储器用于存储程序;

所述处理器用于执行所述程序,所述程序被执行时,具体用于实现如上述任意一项所述的一种主题的动态分配方法。

本申请第四方面提供了一种计算机存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如上述任意一项所述的一种主题的动态分配方法。

本申请提供的一种主题的动态分配方法,通过周期性提取Kafka集群中的指标信息,其中,指标信息至少包括各个主题及其的业务量和各个主机及其对应的资源使用率,其次根据各个主机对应的资源使用率,对各个主机进行分组,得到多组主机集合,然后检测各个主题的业务量是否均匀的分区在各组主机集合中,若各个主题的业务量不均匀的分区在各组主机集合中,则根据各个主题的业务量以及各组主机集合,生成重分配计划,最后根据重分配计划,将各个主题重分配至目标主机集合中。其中,目标主机指代资源使用率较低的主机集合。从而解决了通过人工的分配方式效率较低的问题,同时也解决了容易出现分配错误的问题。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的一种主题检测及动态分配装置的结构示意图;

图2为本申请实施例提供的一种主题的动态分配方法的流程示意图;

图3为本申请实施例提供的一种主题的排名方法的流程示意图;

图4为本申请另一实施例提供的一种主题的动态分配装置的结构示意图;

图5为本申请另一实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本申请实施例提供了一种主题的动态分配方法,以解决通过人工的分配方式效率较低的问题。

可选地,本申请实施例提供的一种主题的动态分配方法,可以主题检测及动态分配装置。所以为了实现本申请实施例提供的一种主题的动态分配方法,可选地,本申请实施例提供了一种主题检测及动态分配装置,如图1所示,包括:检测单元、数据库、分析单元、重分布配置以及自动分配单元。

具体的,检测单元用于提取Kafka集群中主机和主题的各项性能指标。

数据库用于将提取到主机和主题的各项性能指标检测进行存储。

分析单元用于对检测单元提取的各项性能指标进行分析,并生成分配方案。

重分布配置用于根据分析单元生成的分配方案对主题和主机进行重分配配置,得到配置结果。

自动分配单元用于基于重分布配置得到的配置结果,对主题进行自动分配。

基于上述的主题检测及动态分配装置,本申请实施例提供了一种主题的动态分配方法,如图2所示,具体包括以下步骤:

S201、周期性提取Kafka集群中的指标信息。

需要说明的是,为了获知Kafka集群中各个主题的业务量是否不均匀分区在各个主机中,因此需要从Kafka集群中提取主机和主题的各项性能指标,即指标信息。其中,指标信息可以包括各个主题及其的业务量和各个主机及其对应的资源使用率。具体的,各个主机对应的资源使用率指代各个主机对应的CPU/IO使用率。

S202、根据各个主机对应的资源使用率,对各个主机进行分组,得到多组主机集合。

具体的,按照各个主机对应的CPU/IO使用率,将Kafka集群中各个主机划分为高使用率的主机集合、中使用率的主机集合以及低使用率的主机集合,因此便可以得到多组主机集合,从而便可以从主机集合中获悉哪几个主机负载过高,哪几个主机负载较低,以便后续对负载较低的主机进行合理的主题分配。

S203、检测各个主题的业务量是否均匀的分区在各组主机集合中。

可以理解的是,在本申请实施例中,需要对各个主题的分区情况进行分析,避免随着主题的业务量增长,可能造成主题所处的主机负载过高,其他主机负载过低,从而影响主机的资源利用率,因此为了避免这种情况的发生,需要检测各个主题的业务量是否均匀的分区在各组主机集合中,以获悉各个主机的负载情况,从而避免影响Kafka集群的处理情况。因此若各个主题的业务量不均匀的分区在各组主机集合中,则执行步骤S204。

可选地,在执行步骤S203之后,还进一步包括:

若各个主题的业务量均匀的分区在各组主机集合中,则结束重分配任务。

需要说明的是,当各个主题的业务量均匀的分区在各组主机集合中时,说明Kafka集群中的主机不会出现负载过低的情况,并且也不影响Kafka集群的处理能力,因此此时可以结束对主题进行重分配的任务。

S204、根据各个主题的业务量以及各组主机集合,生成重分配计划。

需要强调的是,当各个主题的业务量不均匀的分区在各组主机集合中时,说明后续随着主题的业务量增长,可能会存在有个别主题所处的主机负载过高的情况,因此为了避免给负载过高的主机再分配主题,所以本申请实施例,会根据各个主题的业务量,优先给负载较低的主机分配主题,因此会基于各个主题的业务量、高使用率的主机集合、中使用率的主机集合以及低使用率的主机集合,生成重分配计划。其中,重分配计划指代java文件,后续只需运行java文件,便可以实现主体的重分配。

S205、根据重分配计划,将各个主题重分配至目标主机集合中。

其中,目标主机集合指代资源使用率较低的主机集合。

需要说明的是,为了避免给高使用率的主机集合再分配主题,即负载过高的主机,因此根据重分配计划,对各个主题重分区至低使用率的主机集合中的各个主机中,即目标主机集合。

可选地,也可以给中使用率的主机集合中的各个主机进行主题的适应性分配。

可选地,在分配主题结束后,还需要对Kafka集群进行重新检测,来验证Kafka集群是否可以正常处理,因此在执行步骤S205后,本申请另一实施例还提供了一种Kafka集群的检测方法,具体包括以下步骤:

对Kafka集群进行资源检测。

具体的,对Kafka集群的整体进行资源检测,来获知Kafka集群的功能是否正常。

例如,检测Kafka集群中主机和主题的各项性能指标是否小于步骤S201所提取的Kafka集群中主机和主题的各项性能指标,以及检测Kafka集群中各个主机使用CPU/IO的情况,并各个主题的业务量是否已均匀的分区在各组主机集合中,从而便可以基于各个检测结果,确定Kafka集群的功能是否正常。

当Kafka集群通过资源检测时,记录重分配结果。

其中,重分配结果指代根据重分配计划,将各个主题重分配至目标主机集合中的结果。具体的,当Kafka集群通过资源检测时,说明Kafka集群的处理功能正常,此时需要将重分配结果记录在数据库进行备份,以便后续将重分配结果作为参考。

当Kafka集群未通过资源检测时,返回执行周期性提取Kafka集群中的指标信息。

具体的,当Kafka集群未通过资源检测时,说明Kafka集群的处理功能异常,此时可能主题的重分配结果不太理想,因此还需要重新对各个主题进行分配,所以此时需要返回执行步骤S201,直至Kafka集群通过资源检测。

可选地,在本申请另一实施例中,还可以对Kafka集群中的各个主题进行业务量排名。以便后续根据业务量排名了解主题的分区情况。因此本申请另一实施例还提供了一种主题的排名方法,如图3所示,具体包括以下步骤:

S301、从指标信息中提取各个主题对应的业务量占比。

考虑到指标信息中并不是所有的信息均有利于后续主题的排名,因此为了提高处理的效率,只需要从指标信息中有利于主题的排名的信息,即各个主题对应的业务量占比。

S302、根据各个主题的业务量占比,对各个主题进行加权,得到各个主题的权重。

具体的,根据各个主题的业务量在各个主机中的占比,对业务量占比较高的主题赋予较高的权重,对业务量占比较低的主题较低的权重,从而基于各个主题的权重间接地反映出各个主题在各个主机上的分区情况。

可选地,对业务量占比较高的主题可以赋予20%的权重,对业务量占比较低的主题可以赋予10%的权重,当然也可以是其他阈值,具体的可以根据需求进行设置。

S303、根据各个主题的权重,对各个主题进行排名。

可选地,可以根据各个主题的权重,对各个主题进行升序排名,或者对各个主题进行降序排名,从而基于排名便可以看出主题的分区情况以及主机的资源使用情况。

相应地,基于步骤S303,得到各个主题的排名的方式,因此在本申请另一实施例中,步骤S203的一种具体实施方式,包括以下步骤:

按照各个主题的排名由高到低的顺序,依次检测各个主题的业务量是否均匀的分区在各组主机集合中。

需要说明的是,按照各个主题的排名便可以获知主题的业务量变化情况,那么当某个主题的排名靠前,且该主题所处的主机在高使用率的主机中时,那么后续有可能会给该主机带来超重的负荷,进而影响主机的稳定性,因此考虑到主机的稳定性稳定,所以在本申请实施例中,需要按照各个主题的排名由高到低的顺序,依次检测各个主题的业务量是否均匀的分区在各组主机集合中,从而将靠前的主题优先分配给低使用率的主机集合中的主机。

可选地,在从Kafka集群中提取指标信息之后,还可以将提取到指标信息写入到记录表中,以进行备份,避免数据丢失。因此在本申请另一实施例中,在执行步骤S201之后,还可以进一步包括:

按照提取Kafka集群中的指标信息的时间,将指标信息写入至Kafka运行状态记录表中。

具体的,由于Kafka运行状态记录表中的字段信息太多,为了提高后续查找Kafka运行状态记录表中信息的效率,因此在本申请实施例中,会按照系统获取到指标信息的时间,将指标信息标准化地写入至Kafka运行状态记录表中,以使后续可以根据时间的排布来查找信息。

可选地,在指标信息写入Kafka运行状态记录表中时,首先可以创建Kafka运行状态记录表,可以使用关系型数据库(如MySQL)或NoSQL数据库(如MongoDB)来创建表格,并确保表结构合适以存储指标信息。然后再根据表结构,将指标信息和相应的时间戳存储到表中的对应字段中。

可选地,还可以根据用户需求,定期清理Kafka运行状态记录表中旧的指标信息,以保持记录表的数据量合理。相应地可以设置一个保留期限(如两个月),超过该期限的数据将被删除或归档。

相应地,基于按照各个主题的排名由高到低的顺序,依次检测各个主题的业务量是否均匀的分区在各组主机集合中的方式,在本申请另一实施例中,步骤S202的一种具体实施方式,包括以下步骤:

定期根据Kafka运行状态记录表中各个主机对应的资源使用率,对各个主机进行分组,得到多组主机集合。

可选地,可以首先根据主机的CPU/IO的资源利用率,制定分组策略。以便后续更好地对主机进行监控和管理,然后编写脚本或程序,在规定的时间间隔内按照分组策略以利用脚本或程序执行对主机的分组操作。

本申请提供的一种主题的动态分配方法,通过周期性提取Kafka集群中的指标信息,其中,指标信息至少包括各个主题及其的业务量和各个主机及其对应的资源使用率,其次根据各个主机对应的资源使用率,对各个主机进行分组,得到多组主机集合,然后检测各个主题的业务量是否均匀的分区在各组主机集合中,若各个主题的业务量不均匀的分区在各组主机集合中,则根据各个主题的业务量以及各组主机集合,生成重分配计划,最后根据重分配计划,将各个主题重分配至目标主机集合中。其中,目标主机指代资源使用率较低的主机集合。从而解决了通过人工的分配方式效率较低的问题,同时也解决了容易出现分配错误的问题。

本申请另一实施例提供了一种主题的动态分配装置,如图4所示,包括以下单元:

信息提取单元401,用于周期性提取Kafka集群中的指标信息。

其中,指标信息至少包括各个主题及其的业务量和各个主机及其对应的资源使用率。

主机分组单元402,用于根据各个主机对应的资源使用率,对各个主机进行分组,得到多组主机集合。

检测单元403,用于检测各个主题的业务量是否均匀的分区在各组主机集合中。

生成单元404,用于若各个主题的业务量不均匀的分区在各组主机集合中,则根据各个主题的业务量以及各组主机集合,生成重分配计划。

分配单元405,用于根据重分配计划,将各个主题重分配至目标主机集合中。其中,目标主机集合指代资源使用率较低的主机集合。

需要说明的是,本申请实施例中的上述单元的具体工作过程可相应地参考上述方法实施例中的步骤S201~步骤S205,此处不再赘述。

可选地,本申请另一实施例提供的一种主题的动态分配装置中,还包括:

占比提取单元,用于从指标信息中提取各个主题对应的业务量占比。

加权单元,用于根据各个主题的业务量占比,对各个主题进行加权,得到各个主题的权重。

排名单元,用于根据各个主题的权重,对各个主题进行排名。

相应地,检测单元403,包括:

按照单元,用于按照各个主题的排名由高到低的顺序,依次检测各个主题的业务量是否均匀的分区在各组主机集合中。

可选地,本申请另一实施例提供的一种主题的动态分配装置中,还包括:

资源检测单元,用于对Kafka集群进行资源检测。

记录单元,用于当Kafka集群通过资源检测时,记录重分配结果。其中,重分配结果指代根据重分配计划,将各个主题重分配至目标主机集合中的结果。

执行单元,用于当Kafka集群未通过资源检测时,返回执行周期性提取Kafka集群中的指标信息。

可选地,本申请另一实施例提供的一种主题的动态分配装置中,还包括:

写入单元,用于按照提取Kafka集群中的指标信息的时间,将指标信息写入至Kafka运行状态记录表中。

相应地,主机分组单元402,包括:

分组单元,用于定期根据Kafka运行状态记录表中各个主机对应的资源使用率,对各个主机进行分组,得到多组主机集合。

可选地,本申请另一实施例提供的一种主题的动态分配装置中,还包括:

结束单元,用于若各个主题的业务量均匀的分区在各组主机集合中,则结束重分配任务。

本申请另一实施例提供了一种电子设备,如图5所示,包括:

存储器501和处理器502。

其中,存储器501用于存储程序。

处理器502用于执行程序,程序被执行时,具体用于实现如上述任意一个实施例提供的一种主题的动态分配方法。

本申请另一实施例提供了一种计算机存储介质,用于存储计算机程序,计算机程序被执行时,用于实现如上述任意一个实施例提供的一种主题的动态分配方法。

计算机存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术分类

06120116572369