具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图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、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
本发明实施例提供的消息系统资源均衡装置、方法及设备,通过在分析引擎中生成第一均衡方案,能够以硬性目标和软性目标为核心依据,动态执行资源自动均衡操作,有效均衡服务器资源的利用率,提升消息系统的性能,大大提高消息系统的高可用和健壮性;提高业务指标数据和平台性能数据的展示实时性,真实反映系统的健康情况以及实时反馈业务操作的结果,满足租户对平台和业务数据的实效性要求,提升用户体验。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。