消息***资源均衡装置、方法及设备
技术领域
本发明实施例涉及云计算技术领域,更具体地,涉及一种消息***资源均衡装置、方法及设备。
背景技术
随着云计算在各行各业的深入应用,应用***、租户规模越来越大以及对***之间交互的实时性、平台数据和应用性能数据消费实时性要求也越来越高,特别在电信、金融领域,其核心业务***运行在云平台上、对于大规模应用***的平台数据和应用业务性能数据实时性提出更高的要求,对此,云管理平台也面临新的挑战:底层技术复杂、子***繁多、***间交互频繁、数据量大。消息***作为云管平台各子***之间异步交互的重要组件,负责平台实时数据、历史数据,业务指标实时数据、历史数据以及平台之间数据交互等功能。
随着IaaS、PaaS和SaaS等资源的全纳管,被管平台、被管业务***规模越来越大,消息***集群每天需要处理几十万条甚至上百万条消息,如此大规模的消息量,任意一个消息***服务(Broker)的消息处理失败,都会导致我们整体集群负载不均衡,甚至引起“雪崩”效应。由此会造成平台实时数据无法采集、更新;资源(容器、虚拟机、物理机、数据库等)无法申请开通;历史数据、业务指标数据无法被及时消费等,这些问题会直接影响平台的可靠性和租户的使用感知。因此,为保证消息***集群均衡和可用性,需要花费大量的时间和精力重新分配分区、重新均衡副本。
这些问题反映了现阶段的消息***处理能力无法满足***性增长的数据要求。
针对上述问题,目前常见的处理技术有以下几种:第一种是预先设置足够数量的消息主题分区,但这种方法无法实现分区均衡。第二种是将不同类型的消息数据通过不同主题区分来满足业务需求;需要创建很多主题,因此会带来额外的管理成本。而针对实时数据、历史数据消费,只能通过手动增加消息消费进程来满足,数量少的时间减少消息消费进程,这种方式无法实现资源自动动态扩展(缩放),资源利用率低。
综上可知,现有的技术具有如下缺陷:首先需要对消息***预先设定每个消息Topic分区大小以及每个Broker资源利用率,不能实时进行调整,容易造成消息副本不均衡。而且对实时性能数据无法第一时间获取。
发明内容
针对现有技术存在的问题,本发明实施例提供一种消息***资源均衡装置、方法及设备。
本发明实施例提供一种消息***资源均衡装置,包括负载监视引擎、分析引擎以及操作执行引擎;所述负载监视引擎,用于从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为本发明实施例中的Kafka消息***架构图;
图2为本发明消息***资源均衡装置实施例的模块图;
图3为本发明实施例中的又一消息***资源均衡装置模块图;
图4为本发明消息***资源均衡方法实施例的流程图;
图5为本发明实施例中的消息***资源均衡设备的框架示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例中的Kafka消息***架构图,请参考图1,本发明实施例是基于包括生产者Producer、订阅者Consumer以及集群的Kafka消息***,其中,Kafka集群中涵盖若干个主题Topic、每一Topic包括若干个分区Partition,所述Kafka集群中包括若干个实例Broker,每一Broker中包括若干个分区副本。
需要说明的是,本发明实施例中的若干个指代一个或者多个。
图2为本发明消息***资源均衡装置实施例的模块图,如图2所示,包括负载监视引擎201、分析引擎202以及操作执行引擎203;所述负载监视引擎201,用于从Kafka集群中采集Kafka指标,并将所述Kafka指标发送至所述分析引擎202,其中,所述Kafka指标包括所述Kafka集群的负载及分区信息;所述分析引擎202,用于根据所述Kafka指标、所述Kafka集群的硬性目标和所述Kafka集群的软性目标,生成对应于所有订阅者的第一均衡方案,并将所述第一均衡方案发送至所述操作执行引擎203,其中,所述硬性目标为若干个所述Kafka集群必须实现的目标,所述软性目标为若干个所述Kafka集群优选实现的目标;所述操作执行引擎203,用于根据所述第一均衡方案生成若干个操作指令,并将所述若干个操作指令发送至所述Kafka集群以供所述Kafka集群根据所述操作指令进行资源均衡。
需要说明的是,在所述均衡装置中,负载监视引擎201与分析引擎202相连,分析引擎202与操作执行引擎203相连。
具体地,在所述分析引擎202中,出现的硬性目标和软性目标分别如下:
1、硬性目标:
1)分区副本配置必须是机架可识别的。相同分区副本放在不同的机架上,这样当某个机架停机时,任何分区最多会有一个副本丢失。这有助于控制故障边界,并使Kafka更加健壮。
2)Broker的资源利用率必须在预定义的阈值内。
3)即使Broker上的所有分区副本都成为leader,也不能允许网络利用超出预先定义的容量。在这种情况下,所有的订阅者流量将被重定向到该Broker,这将导致比平常更高的网络利用率。
2、软性目标:
1)在所有Broker之间实现尽可能一致的资源利用率。
2)在Broker之间实现leader分区的均匀字节输入速率。
3)将特定主题的分区均匀分配到所有Broker上。
4)将分区副本均匀分配到所有Broker上。
需要说明的是,各个订阅者之间存在优先级,而均衡装置是以优先级递减的顺序保证各个硬性目标和软性目标的。
进一步地,本实施例的消息***资源均衡装置的工作流程如下所述:负载监视引擎201从Kafka集群中采集Kafka指标,并将所述Kafka指标发送至所述分析引擎202。分析引擎202通过所述Kafka指标,以及所述Kafka集群的硬性目标和软性目标,生成对应于所有订阅者的第一均衡方案,并将所述第一均衡方案发送至所述操作执行引擎203。所述操作执行引擎203根据所述第一均衡方案生成若干个操作指令,并将所述若干个操作指令发送至所述Kafka集群以供所述Kafka集群根据所述操作指令进行资源均衡。
进一步地,分析引擎202中生成的第一均衡方案是需要满足全部的硬性目标的。
本发明实施例提供的消息***资源均衡装置,通过在分析引擎202中生成第一均衡方案,能够以硬性目标和软性目标为核心依据,动态执行资源自动均衡操作,有效均衡服务器资源的利用率,提升消息***的性能,大大提高消息***的高可用和健壮性;提高业务指标数据和平台性能数据的展示实时性,真实反映***的健康情况以及实时反馈业务操作的结果,满足租户对平台和业务数据的实效性要求,提升用户体验。
基于上述实施例,所述消息装置还包括异常检测引擎,用于根据所述负载监视引擎201发送的所述Kafka指标,对所述Kafka集群中的异常进行检测,获得异常检测结果,并将所述异常检测结果发送至所述分析引擎202;对应的,所述根据所述Kafka指标、所述Kafka集群的硬性目标和所述Kafka集群的软性目标,生成对应于所有订阅者的第一均衡方案,具体包括:根据所述Kafka指标、所述异常检测结果以及所述Kafka集群的硬性目标和软性目标,生成对应于所有订阅者的第一均衡方案。
具体地,在Kafka集群中会出现种种异常,通过异常检测引擎对Kafka集群中的异常进行检测,并将检测结果发送至所述分析引擎202。这样在分析引擎202生成第一均衡方案时也会考虑到该检测结果。
需要说明的是,检测结果反映了Kafka集群中的异常情况,可举例为:非空xxBroker离群等。
基于上述实施例,所述根据所述负载监视引擎201发送的所述Kafka指标,对所述Kafka集群中的异常进行检测,获得异常检测结果,具体包括:根据所述负载监视引擎201发送的所述Kafka指标,对所述Kafka集群中的非空Broker离群,以及所述Kafka集群中违反所述硬性目标和所述软性目标的情况进行检测,获得异常检测结果。
需要说明的是,本实施例具体是指,异常情况包括非空Broker离群,以及Kafka集群中违反所述硬性目标和所述软性目标的情况。
非空Broker离群会导致分区副本数不足。因为这可能会在正常的集群恢复期间发生,所以异常检测引擎在触发通知并修复集群之前提供可配置的宽限期。
本发明实施例提供的消息***资源均衡装置,通过设置根据Broker故障和违反目标将主动尝试通过自动分析工作负载并执行第一均衡方案来解决目标违反,解决了现有技术中随着业务量的快速增长,每天需要处理GB甚至TB数据量,消息处理出现严重延迟、平台和业务数据无法实时展现给租户,因此可能导致平台和业务***故障发生,不能及时产生告警的问题。本发明利用分区自动均衡提高消息***的业务吞吐量、减少数据延迟,提升业务***用户体验。
基于上述实施例,所述从Kafka集群中采集Kafka指标,并将所述Kafka指标发送至所述分析引擎202,其中,所述Kafka指标包括所述Kafka集群的负载及分区信息,具体包括:从Kafka集群中采集Kafka指标,通过所述Kafka指标生成集群工作负载模型,并将所述集群工作负载模型发送至所述分析引擎202和所述异常检测引擎;其中,所述Kafka指标包括Kafka集群整体负载信息、Kafka集群性能指标数据、Kafka集群分区的数量、Kafka集群分区分布信息以及Kafka集群分区数据均衡信息;所述集群工作负载模型包括Kafka集群的磁盘利用率,Kafka集群的CPU利用率以及Kafka集群的字节输入和输出速率。
需要说明的是,本实施例是指,负载监视引擎201基于Kafka指标生成集群工作负载模型,分析引擎202和异常检测引擎是接收负载监视引擎201发送的集群工作负载模型的,集群工作负载模型反映了Kafka集群的负载以及工作等信息。
本发明实施例提供的消息***资源均衡装置,通过设置负载监视引擎201基于Kafka指标生成集群工作负载模型,能够使得最终生成的第一均衡方案准确适用。
基于上述实施例,所述分析引擎202,还用于通过所述Kafka指标,以及所述Kafka集群的硬性目标和软性目标,在所述Kafka集群违反了任一硬性目标时,生成对应于所有订阅者的第二均衡方案,并将所述第二均衡方案发送至所述操作执行引擎203。
需要说明的是,本实施例是在前次执行第一均衡方案时,违反了硬性目标的前提下,再生成一个第二均衡方案,在这里,违反了硬性目标是通过异常检测引擎检测的。
基于上述实施例,所述Kafka集群根据所述操作指令进行资源均衡,包括:所述Kafka集群根据所述操作指令进行Kafka集群分区扩容、Kafka集群分区重分配以及Kafka集群分区副本重分配中的至少一种,以使得所述Kafka集群资源均衡。
需要说明的是,本发明实施例中的若干个操作指令的指示操作包括Kafka集群分区扩容、Kafka集群分区重分配以及Kafka集群分区副本重分配中的至少一种,是一种优选方案,本发明还保护包括其它指示操作的方案。
本发明实施例提供的消息***资源均衡装置,通过设置操作执行引擎203将操作指令发送至所述Kafka集群中以对所述Kafka集群进行Kafka集群分区扩容、Kafka集群分区重分配以及Kafka集群分区副本重分配中的至少一种,以使得资源均衡,能够实现Kafka消息***的资源自动均衡,增强数据的高可用,避免数据丢失,从而达到最高业务吞吐量、减少数据阻塞时间,提升业务***用户体验。
基于上述实施例,所述均衡装置还包括数据采集器,所述数据采集器包括Workload收集器、Metrics收集器和Partition收集器;所述Workload收集器用于采集所述Kafka集群整体负载信息;所述Metrics收集器用于采集Kafka集群性能指标数据;所述Partition收集器用于采集所述Kafka集群分区的数量、所述Kafka集群分区分布信息以及所述Kafka集群分区数据均衡信息。
需要说明的是,本实施例中的数据采集器是采集上述实施例中提出的Kafka指标的。
进一步地,本发明实施例中提出的数据采集器包括Workload收集器、Metrics收集器和Partition收集器,是一种优选情况,本发明还保护包括其它种收集器的方案。
本发明实施例提供的消息***资源均衡装置,通过设置数据采集器包括Workload收集器、Metrics收集器和Partition收集器,能够采集更加准确的Kafka指标,大大提升了消息***各个Broker资源利用率。
作为一个优选实施例,图3为本发明实施例中的又一消息***资源均衡装置模块图,如图3所示,包括负载监视引擎201、分析引擎202以及操作执行引擎203;所述负载监视引擎201,用于从Kafka集群中采集Kafka指标,并将所述Kafka指标发送至所述分析引擎202,其中,所述Kafka指标包括所述Kafka集群的负载及分区信息;所述分析引擎202,用于根据所述Kafka指标、所述Kafka集群的硬性目标和所述Kafka集群的软性目标,生成对应于所有订阅者的第一均衡方案,并将所述第一均衡方案发送至所述操作执行引擎203,其中,所述硬性目标为若干个所述Kafka集群必须实现的目标,所述软性目标为若干个所述Kafka集群优选实现的目标;所述操作执行引擎203,用于根据所述第一均衡方案生成若干个操作指令,并将所述若干个操作指令发送至所述Kafka集群以供所述Kafka集群根据所述操作指令进行资源均衡。
还包括异常检测引擎,用于根据所述负载监视引擎201发送的所述Kafka指标,对所述Kafka集群中的异常进行检测,获得异常检测结果,并将所述异常检测结果发送至所述分析引擎202;对应的,所述根据所述Kafka指标、所述Kafka集群的硬性目标和所述Kafka集群的软性目标,生成对应于所有订阅者的第一均衡方案,具体包括:根据所述Kafka指标、所述异常检测结果以及所述Kafka集群的硬性目标和软性目标,生成对应于所有订阅者的第一均衡方案。
所述均衡装置还包括数据采集器,所述数据采集器包括Workload收集器、Metrics收集器和Partition收集器;所述Workload收集器用于采集所述Kafka集群整体负载信息;所述Metrics收集器用于采集Kafka集群性能指标数据;所述Partition收集器用于采集所述Kafka集群分区的数量、所述Kafka集群分区分布信息以及所述Kafka集群分区数据均衡信息。
本发明实施例提供的消息***资源均衡装置,通过引入数据采集器、负载监视引擎201、异常检测引擎、分析引擎202和操作执行引擎203,能够实现消息***分区、分区副本以及Broker资源自动均衡,提高Broker服务器资源利用率,该装置实现了各引擎之间的高度解耦,满足分布式部署的要求,并且借助全方位的采集器能够精准判断各Broker资源使用情况,使得业务***能够运行在最佳性能的环境中,提升业务***稳定性及用户体验。本发明实施中的均衡装置使得Kafka消息***可靠、具有强处理能力和高吞吐量,满足了不断发展的云管平台的业务需求。
基于上述实施例,图4为本发明消息***资源均衡方法实施例的流程图,如图4所示,包括:S401、负载监视引擎201从Kafka集群中采集Kafka指标,并将所述Kafka指标发送至所述分析引擎202,其中,所述Kafka指标包括所述Kafka集群的负载及分区信息;S402、所述分析引擎202根据所述Kafka指标、所述Kafka集群的硬性目标和所述Kafka集群的软性目标,生成对应于所有订阅者的第一均衡方案,并将所述第一均衡方案发送至操作执行引擎203,其中,所述硬性目标为若干个所述Kafka集群必须实现的目标,所述软性目标为若干个所述Kafka集群优选实现的目标;S403、所述操作执行引擎203根据所述第一均衡方案生成若干个操作指令,并将所述若干个操作指令发送至所述Kafka集群以供所述Kafka集群根据所述操作指令进行资源均衡。
基于上述实施例,图5为本发明实施例中的消息***资源均衡设备的框架示意图。请参考图5,本发明实施例提供一种消息***资源均衡设备,包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和总线540,其中,处理器510,通信接口520,存储器530通过总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如下方法,包括:负载监视引擎201从Kafka集群中采集Kafka指标,并将所述Kafka指标发送至所述分析引擎202,其中,所述Kafka指标包括所述Kafka集群的负载及分区信息;所述分析引擎202根据所述Kafka指标、所述Kafka集群的硬性目标和所述Kafka集群的软性目标,生成对应于所有订阅者的第一均衡方案,并将所述第一均衡方案发送至操作执行引擎203,其中,所述硬性目标为若干个所述Kafka集群必须实现的目标,所述软性目标为若干个所述Kafka集群优选实现的目标;所述操作执行引擎203根据所述第一均衡方案生成若干个操作指令,并将所述若干个操作指令发送至所述Kafka集群以供所述Kafka集群根据所述操作指令进行资源均衡。
基于上述实施例,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述方法实施例所提供的均衡方法,例如包括:负载监视引擎201从Kafka集群中采集Kafka指标,并将所述Kafka指标发送至所述分析引擎202,其中,所述Kafka指标包括所述Kafka集群的负载及分区信息;所述分析引擎202根据所述Kafka指标、所述Kafka集群的硬性目标和所述Kafka集群的软性目标,生成对应于所有订阅者的第一均衡方案,并将所述第一均衡方案发送至操作执行引擎203,其中,所述硬性目标为若干个所述Kafka集群必须实现的目标,所述软性目标为若干个所述Kafka集群优选实现的目标;所述操作执行引擎203根据所述第一均衡方案生成若干个操作指令,并将所述若干个操作指令发送至所述Kafka集群以供所述Kafka集群根据所述操作指令进行资源均衡。
基于上述实施例,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述方法实施例所提供的均衡方法,例如包括:负载监视引擎201从Kafka集群中采集Kafka指标,并将所述Kafka指标发送至所述分析引擎202,其中,所述Kafka指标包括所述Kafka集群的负载及分区信息;所述分析引擎202根据所述Kafka指标、所述Kafka集群的硬性目标和所述Kafka集群的软性目标,生成对应于所有订阅者的第一均衡方案,并将所述第一均衡方案发送至操作执行引擎203,其中,所述硬性目标为若干个所述Kafka集群必须实现的目标,所述软性目标为若干个所述Kafka集群优选实现的目标;所述操作执行引擎203根据所述第一均衡方案生成若干个操作指令,并将所述若干个操作指令发送至所述Kafka集群以供所述Kafka集群根据所述操作指令进行资源均衡。
本领域普通技术人员可以理解:实现上述设备实施例或方法实施例仅仅是示意性的,其中所述处理器和所述存储器可以是物理上分离的部件也可以不是物理上分离的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
本发明实施例提供的消息***资源均衡装置、方法及设备,通过在分析引擎中生成第一均衡方案,能够以硬性目标和软性目标为核心依据,动态执行资源自动均衡操作,有效均衡服务器资源的利用率,提升消息***的性能,大大提高消息***的高可用和健壮性;提高业务指标数据和平台性能数据的展示实时性,真实反映***的健康情况以及实时反馈业务操作的结果,满足租户对平台和业务数据的实效性要求,提升用户体验。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。