分区均衡性异常检测方法、装置、设备、介质及产品
文献发布时间:2024-04-18 19:58:21
技术领域
本公开涉及大数据技术领域,可以应用于金融科技技术领域,特别涉及一种分区均衡性异常检测方法、装置、设备、介质及产品。
背景技术
随着数据中心服务器规模呈现爆发性增长,给运维人员的工作带来巨大的挑战。Kafka是一个基于磁盘进行数据存储的分布式发布订阅消息系统,具有高性能、高吞吐、低延时、可持久化、可水平扩展等特点,对于大数据的数据处理和分析,Kafka无疑是一个不可多得的选择。在使用过程中,Kafka可以将主题(Topic)划分为多个分区(Partition),会根据分区规则将消息分布到不同的分区中,以此实现负载均衡和水平扩展。那分区规则设置的是否合理,直接影响到消息是否被均匀分布。
在这样的背景下,对Kafka分区均衡性的监控也成了极其重要的关注点。面对服务器规模较大的Kkafka集群和其下大量的主题及分区,传统的人工手动式检查工作很难及时发现某个集群的某个主题分区分配不均衡,更无法适应集群、主题和分区规模日益增长下的监控需求,亟需自动化的监控系统,在满足高效性与普适性的要求下,以快速发现数据中心Kafka分区分配不均衡,主动且自发地解决生产问题。
发明内容
有鉴于此,本公开的主要目的是提供一种分区均衡性异常检测方法、装置、设备、介质及产品,旨在至少部分解决传统的人工手动式检查工作很难及时发现某个集群的某个主题分区分配不均衡,更无法适应集群、主题和分区规模日益增长下的监控需求的技术问题。
为实现上述目的,本公开实施例的第一方面提供一种分区均衡性异常检测方法,包括:获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量;以及根据所述每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题。
根据本公开的实施例,其中,所述获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量包括:获取预设时间段内每个主题中每个分区的最大生产位移和最小生产位移;以及分别将与每个分区对应的所述最大生产位移与所述最小生产位移之间的差值确定为所述每个分区的生产数据量。
根据本公开的实施例,其中,所述获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量还包括:调用结构化查询语句从性能容量管理数据库中获取所述最大生产位移和所述最小生产位移;以所主题的名称和所述分区的名称对所述最大生产位移和所述最小生产位移进行排序;以及以所主题的名称和所述分区的名称为索引存储排序后的所述最大生产位移和所述最小生产位移。
根据本公开的实施例,其中,所述根据所述每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题包括:对于每一个主题,执行以下操作:确定所述主题中生产数据量等于零的分区的数量;以及响应于所述主题中生产数据量等于零的分区的数量不为零且小于所述主题中分区的总数量,确定所述主题存在分区均衡性异常。
根据本公开的实施例,其中,所述根据所述每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题还包括:对于每一个主题,执行以下操作:计算所述主题中所有分区的生产数据量的标准差;响应于所述生产数据量的标准差大于生产数据量波动可控阈值,确定所述主题存在分区均衡性异常,其中,所述生产数据量波动可控阈值是根据所述集群的稳定状况确定的。
根据本公开的实施例,还包括:在确定存在分区均衡性异常的主题的情况下,发送预警信息,其中,发送预警信息的方法包括邮件式预警、短信预警、监控系统预警、运维网页展示预警中的至少之一。
根据本公开的实施例,其中,所述预警信息包括预警类型,预警等级,存在分区均衡性异常的集群名称,存在分区均衡性异常的主题名称,存在分区均衡性异常的主题中数据异常分区的最大生产位移、最小生产位移和生产数据量等于零的分区的数量,存在分区均衡性异常的主题的生产位移随时间的变化趋势。
根据本公开的实施例,其中,所述预警信息按照预警类型,预警等级,存在分区均衡性异常的集群名称,存在分区均衡性异常的主题名称,存在分区均衡性异常的主题中数据异常分区的最大生产位移、最小生产位移和生产数据量等于零的分区的数量,存在分区均衡性异常的主题的生产位移随时间的变化趋势依次递进的方式进行排列。
根据本公开的实施例,还包括:编写定时监控程序;设置多线程,其中,每一个集群对应配置一个线程;调用所述定时监控程序开启多线程并行任务,使每一个线程对与该线程对应的集群进行独立的分区均衡性异常检测。
本公开实施例第二方面提供一种分区均衡性异常检测装置,包括:获取模块,用于获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量;以及确定模块,用于根据所述每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题。
本公开实施例第三方面提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据上述分区均衡性异常检测方法。
本公开实施例第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行指令,该指令被处理器执行时使处理器执行根据上述分区均衡性异常检测方法。
本公开实施例第五方面提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据上述分区均衡性异常检测方法。
根据本公开实施例提供的分区均衡性异常检测方法、装置、设备、介质及产品,至少具备以下有益效果:
通过对集群的每个主题中每个分区的生成数据量进行监测来确定存在分区均衡性异常的主题,由于生成数据量能够准确地反馈分区的数据情况,因此,基于生成数据量直接进行分区均衡性异常能够提高kafka分区均衡性异常检测的准确性。同时,由于生成数据量能够直观地反馈分区的数据情况,因此,基于生成数据量直接进行分区均衡性异常能够简单便捷地判断kafka分区的数据情况,从而提高了分区均衡性异常检测的效率且易于实现对大规模服务器背景下的kafka分区均衡性的检测。
通过每个主题中每个分区的最大生产位移和最小生产位移之前的差值确定为每个分区的数据量,由于kafka分区的生产位移是随着生产者生产数据不断增加而逐渐增长,符合线性增长关系,因此,能够快速地根据最大生产位移和最小生产位移之间的差值确定生产数据量,并且,确定的生产数据量准确,从而提高了kafka分区均衡性异常检测的高效性和准确性。
通过调用结构化查询语句从性能容量管理数据库中获取最大生产位移和最小生产位移,由于结构化查询语句不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,使得具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口,因此,更容易实现对大规模服务器背景下的kafka分区均衡性的检测。
针对不同的数据情况,采用不同的策略来确定存在分区均衡性异常的情况,由于不同的策略能够涵盖不同类型的分区均衡性异常,因此,基于不同的策略进行均衡性检测能够提高kafka分区均衡性异常检测的准确性。
由于通过多种形式向用户发送预警信息,一方面,能够及时通知运维人员对分区均衡性异常问题进行排查及处理,另一方面,能够从kafka分区均衡性监测相关统计数据、分区均衡性异常的预警记录和处理记录、集群各主题生产位移随时间的变化趋势等方面全方位地向用户展示相关信息,便于用户分析分区均衡性异常的根本原因。此外,通过合理定义预警信息的具体格式,能够更加直观地向用户展示相关信息。
通过编写定时监控程序,调用定时监控程序开启多线程并行任务进行独立的分区均衡性异常检测,一方面,能够实现定时自动对kafka分区均衡性进行检测,无需运维人员手动检测,另一方面,能够实现对大规模服务器背景下的kafka分区均衡性的检测。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1示意性示出了根据本公开实施例的分区均衡性异常检测方法及装置的系统架构100;
图2示意性示出了根据本公开一实施例的分区均衡性异常检测方法的流程图;
图3示意性示出了根据本公开一实施例的图2所示的操作S201中获取每个分区的生产数据量的流程图;
图4示意性示出了根据本公开另一实施例的图2所示的操作S201中获取每个分区的生产数据量的流程图;
图5示意性示出了根据本公开一实施例的图2所示的操作S202中确定分区均衡性异常的流程图;
图6示意性示出了根据本公开另一实施例的图2所示的操作S202中确定分区均衡性异常的流程图;
图7示意性示出了根据本公开另一实施例的分区均衡性异常检测方法的流程图;
图8示意性示出了根据本公开又一实施例的分区均衡性异常检测方法的流程图;
图9示意性示出了根据本公开一实施例的分区均衡性异常检测装置的框图;
图10示意性示出了根据本公开另一实施例的分区均衡性异常检测装置的框图;
图11示意性示出了根据本公开又一实施例的分区均衡性异常检测装置的框图;
图12示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据一致性修复装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
在本公开的技术方案中,所涉及的用户信息(包括但不限于用户个人信息、用户图像信息、用户设备信息,例如位置信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、存储、使用、加工、传输、提供、公开和应用等处理,均遵守相关国家和地区的相关法律法规和标准,采取了必要保密措施,不违背公序良俗,并提供有相应的操作入口,供用户选择授权或者拒绝。
针对相关技术中存在的技术问题,本公开实施例提供了一种分区均衡性异常检测方法,包括:获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量。根据每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题。
图1示意性示出了根据本公开实施例的分区均衡性异常检测方法及装置的系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括性能容量管理数据库101,Kafka集群管理系统102,网络103和服务器104。网络103用于性能容量管理数据库101,Kafka集群管理系统102与服务器104之间提供通信链路。
性能容量管理数据库101例如可以是层次型数据库、网状型数据库和关系型数据库,例如可以包括MySQL数据库等,性能容量管理数据库101可以用来记录着每分钟kafka生产位移的实时值,可以获取每个集群每个主题的每个分区在每分钟时的生产位移,通过计算当前时刻的生产位移current_producerOffset和上一时刻的生产位移last_producerOffset的差值produceDiff,可得到该分区在这一分钟内的生产数据量,即这一分钟内由生产者生产并分派到该分区的数据量。
Kafka集群管理系统102记录着所有的kafka集群及相关的配置信息,如所属应用及应用维护人等。
网络103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。其中有线方式例如可以是采用线缆及以下多种接口中的任一种连接:光纤通道、红外线接口、D型数据接口、串行接口、USB接口、USB Type-C接口或Dock接口,无线方式例如可以是采用无线通信方式连接的,其中的无线通信例如可采用蓝牙、Wi-Fi、Infrared、ZigBee等多个无线技术标准中的任一个。
服务器104通过网络103从性能容量管理数据库101中获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量,根据每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题。
需要说明的是,本公开实施例所提供的分区均衡性异常检测方法可以由服务器104执行。相应地,本公开实施例所提供的转分区均衡性异常检测装置可以设置于服务器104中。或者,本公开实施例所提供的分区均衡性异常检测方法也可以由不同于服务器104且能够与性能容量管理数据库101和/或Kafka集群管理系统102和/或服务器104通信的服务器或服务器集群执行。相应地,本公开实施例所提供的分区均衡性异常检测装置也可以设置于不同于服务器104且能够与性能容量管理数据库101和/或Kafka集群管理系统102和/或转服务器104通信的服务器或服务器集群中。或者,本公开实施例所提供的分区均衡性异常检测方法也可以部分由服务器104执行,部分由性能容量管理数据库101执行,部分由Kafka集群管理系统102执行。相应的,本公开实施例所提供的分区均衡性异常检测装置也可以部分设置于服务器104中,部分设置于性能容量管理数据库101中,部分设置于Kafka集群管理系统102中。
应该理解,图1中的性能容量管理数据库、Kafka集群管理系统、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的性能容量管理数据库、Kafka集群管理系统、网络和服务器。
本公开实施例提供的分区均衡性异常检测方法,可以应用于金融科技领域。例如,对于银行而言,会采用Kafka为银行Kafka客户提供消息订阅服务,如理财产品的推荐订阅,系统信息的通知等。为了给海量的客户提供正常的订阅服务,需要消息被均匀分布,也即需要及时地检测kafka分区均衡性异常的情况,保证kafka分区分配的均衡性。传统的方式一般采用两种方式,第一种方式为:银行的运维人员定期登录服务器手工检查kafka分区,但这种方式人工代价太大,且不能及时发现问题。第二种方式为:基于存储于数据库中的各集群各主题的所有分区各个时间点的分区数据量,银行的运维人员查询指定时间段内所有分区的数据量并导出excel表格,再通过表格计算出每个分区在该时间段内的生产数据量,找出部分分区无数据和分区不均衡等情况进行提示。这种方法虽然很大的缩短了手工检查服务器的处理时间,但工序繁琐、离不开人工操作,不能及时发现问题。然而,采用本公开实施例提供的分区均衡性异常检测方法,能够自动实现大规模服务器背景下的kafka分区均衡性的准确及高效检测。
应当理解是,本公开实施例提供的分区均衡性异常检测方法不仅限于应用于金融科技领域,也可用于除金融领域之外的任意领域。上述描述只是示例性的,对于涉及任何具有分区均衡性异常检测的领域,例如电子商务、物流等其他技术领域,都可以应用本公开实施例的分区均衡性异常检测方法。
以下将基于图1描述分区均衡性异常检测的场景,通过图2~图8对本公开实施例的分区均衡性异常检测方法进行详细描述。
图2示意性示出了根据本公开一实施例的分区均衡性异常检测方法的流程图。
如图2所示,分区均衡性异常检测方法例如可以包括操作S201~操作S202。
在操作S201,获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量。
在操作S202,根据每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题。
在本公开的实施例中,操作S201~操作S202的核心思想为基于已入库的kafka生产实时数据,检测分区均衡性异常,设置定时任务定期对kafka所有集群上所有主题的各分区生产数据量进行巡检,结合集群特性对异常进行判断和预警,从而实现对大规模服务器背景下的kafka分区均衡性的检测。
例如,集群的数量为L、每个集群设置的主题的数量为M,每个主题内划分的分区的数量为N,则在分区均衡性检测时,需要获取L×M×N个分区的生产数据量,再根据每个主题下的N个分区的生产数据量确定该主题是否存在分区均衡性异常,则该主题所属的集群为分区均衡性异常集群。分区均衡性异常包括多种情况,一种情况是某一主题的N个分区中部分分区没有生产数据,也即生产数据量为零,另一部分分区生产数据,也即生产数据量不为零,则该主题存在分区均衡性异常情况;另一种情况是某一主题的N个分区均生产数据,但是N个分区中少数分区产生的数据量较大,少数分区产生的数据量较小,则该主题存在分区均衡性异常情况;还有一种情况是,某一主题的N个分区中部分分区没有生产数据,另一部分分区生产数据,部分生产数据的分区中少数分区产生的数据量较大,少数分区产生的数据量较小,则该主题也存在分区均衡性异常情况。
根据本公开的实施例,通过对集群的每个主题中每个分区的生成数据量进行监测来确定存在分区均衡性异常的主题,由于生成数据量能够准确地反馈分区的数据情况,因此,基于生成数据量直接进行分区均衡性异常能够提高kafka分区均衡性异常检测准确性。同时,由于生成数据量能够直观地反馈分区的数据情况,因此,基于生成数据量直接进行分区均衡性异常能够简单便捷地判断kafka分区的数据情况,从而提高了分区均衡性异常检测的效率且易于实现对大规模服务器背景下的kafka分区均衡性的检测。
图3示意性示出了根据本公开一实施例的图2所示的操作S201中获取每个分区的生产数据量的流程图。
如图3所示,操作S201中获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量例如可以包括操作S301~操作S302。
在操作S301,获取预设时间段内每个主题中每个分区的最大生产位移和最小生产位移。
在操作S302,分别将与每个分区对应的最大生产位移与最小生产位移之间的差值确定为每个分区的生产数据量。
在本公开的实施例中,可以从性能容量管理数据库获取每个分区的最大生产位移和最小生产位移。性能容量管理数据库中记录着每分钟kafka生产位移的实时值,可以获取每个集群每个主题的每个分区在每分钟时的生产位移,通过计算当前时刻的生产位移current_producerOffset和上一时刻的生产位移last_producerOffset的差值produceDiff,可得到该分区在这一分钟内的生产数据量,即这一分钟内由生产者生产并分派到该分区的数据量。考虑到生产位移是随着生产者生产数据不断增加而逐渐增长,符合线性增长关系,因此当计算某段时间内一个分区的生产数据总量时,只需计算该段时间内最大生产位移max_producerOffset和最小生产位移min_producerOffset之间的差值produceDiff,即可得到这段时间内的生产数据总量produceVolume=produceDiff。
根据本公开的实施例,通过每个主题中每个分区的最大生产位移和最小生产位移之前的差值确定为每个分区的数据量,由于kafka分区的生产位移是随着生产者生产数据不断增加而逐增长,符合线性增长关系,因此,能够快速地根据最大生产位移和最小生产位移之间的差值确定生产数据量,并且,确定的生产数据量准确,从而提高了kafka分区均衡性异常检测的高效性和准确性。
图4示意性示出了根据本公开另一实施例的图2所示的操作S201中获取每个分区的生产数据量的流程图。
如图4所示,操作S201中获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量例如还可以包括操作S401~操作S403。
在操作S401,调用结构化查询语句从性能容量管理数据库中获取最大生产位移和最小生产位移。
在操作S402,以所主题的名称和分区的名称对最大生产位移和最小生产位移进行排序。
在操作S403,以所主题的名称和分区的名称为索引存储排序后的最大生产位移和最小生产位移。
在本公开的实施例中,通过SQL查询语句从性能容量管理数据库中获取该集群在监测时间段内每个主题(topic)每个分区(partition)的最大生产位移max_producerOffset和最小生产位移min_producerOffset,以及二者之间的差值produceDiff,并将结果按照topic和partition进行排序及存储。
例如,SQL查询语句例如可以为:select topic,partition,MAX(producerOffset)as max_producerOffset,MIN(producerOffset)as min_producerOffset,(max_producerOffset-min_producerOffset)as produceDiff from$TABLENAME where time<$STARTTIME and cluster=$CLUSTER GROUP BY topic,partition ORDER BY topic ASC,partition ASC。
其中,SQL查询语句的释义可以为:TABLENAME为性能容量管理数据库中记录kafka生产位移的数据表表名,STARTTIME为监测时间段的起始时间,CLUSTER为当前遍历到的集群名称。
SQL查询语句查询结果表展示了该集群每个主题的每个分区在监测时间段内的生产数据统计值,记为结果表1:
表1
从表2可以看出,集群CLUSTER1包括主题TOPIC1、TOPIC2、TOPIC3,TOPIC1包括分区partition0、partition1、partition2、partition3,TOPIC2包括分区partition0、partition1、partition2,TOPIC3包括分区partition0、partition1、partition2、partition3,在存储最大生产位移max_producerOffset和最小生产位移min_producerOffset以及二者之间的差值produceDiff时,存储的顺序是先按照主题名称进行排序TOPIC1-TOPIC2-TOPIC3,然后针对每一主题,再按照partition0、partition1、partition2,TOPIC3的顺序进行记录存储。
进一步地,可以对表1中所示的每一行数据进行遍历,记录下每个主题有哪些分区PARTITION_LIST以及每个分区的生产数据量DIFF_LIST同时统计每个主题中无生产数据(即produceDiff=0)的分区ZERO_LIST,从而得到结果表2,以便于后续进行分区均衡性异常检测。
表2
从表2可以看出,相较于表1,表2中的信息相对较少,有助于后续快速地进行分区均衡性异常检测,而表1中的信息详细,方便于后续需要查找历史信息时进行回溯。
根据本公开的实施例,通过调用结构化查询语句从性能容量管理数据库中获取所述最大生产位移和所述最小生产位移,由于结构化查询语句不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,使得具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口,因此,更容易实现对大规模服务器背景下的kafka分区均衡性的检测。
图5示意性示出了根据本公开一实施例的图2所示的操作S202中确定分区均衡性异常的流程图。
如图5所示,在根据每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题的过程中,对于每一个主题,例如可以执行操作S501~操作S502。
在操作S501,确定主题中生产数据量等于零的分区的数量。
在操作S502,响应于主题中生产数据量等于零的分区的数量不为零且小于主题中分区的总数量,确定主题存在分区均衡性异常。
例如,依据表2记载的信息进行分区均衡性异常判断:在ZERO_LIST.length<0&&ZERO_LIST.1ength<PARTITION_LIST.length的情况系,即当某集群的某个主题中无数据分区的数量(ZERO_LIST.length)不为0,且小于该主题的分区总数(PARTITION_LIST.length),则视为该集群的该主题存在部分分区无数据的异常,例如结果表2中的TOPIC1。该判断策略用于判断前面描述的某一主题的N个分区中部分分区没有生产数据,另一部分分区生产数据,则该主题存在分区均衡性异常的情况。
图6示意性示出了根据本公开另一实施例的图2所示的操作S202中确定分区均衡性异常的流程图。
如图6所示,在根据每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题的过程中,对于每一个主题,例如可以执行操作S601~操作S602。
在操作S601,计算主题中所有分区的生产数据量的标准差。
在操作S602,响应于生产数据量的标准差大于生产数据量波动可控阈值,确定主题存在分区均衡性异常,其中,生产数据量波动可控阈值是根据集群的稳定状况确定的。
例如,计算一个主题下所有分区生产数据量DIFF_LIST的标准差StandardDiviation,若StandardDiviation>μ(μ为生产数据量波动可控阈值,根据集群稳定状况评估调整)视为分区间生产数据分配不均衡,例如结果表2中的TOPIC3。该判断策略用于判断前面描述的某一主题的N个分区均生产数据,但是N个分区中少数分区产生的数据量较大,少数分区产生的数据量较小,则该主题存在分区均衡性异常情况。
应当理解,将上述两种策略结合在一起,可以判断前面描述的某一主题的N个分区中部分分区没有生产数据,另一部分分区生产数据,部分生产数据的分区中少数分区产生的数据量较大,少数分区产生的数据量较小,则该主题也存在分区均衡性异常的情况。上述两种策略可以独立使用也可以结合在一起使用,具体根据实际应用场景灵活选择,本公开的实施例不做限制。
根据本公开的实施例,针对不同的数据情况,采用不同的策略来确定存在分区均衡性异常的情况,由于不同的策略能够涵盖不同类型的分区均衡性异常,因此,基于不同的策略进行均衡性检测能够提高kafka分区均衡性异常检测的高效性。
图7示意性示出了根据本公开另一实施例的分区均衡性异常检测方法的流程图。
如图7所示,分区均衡性异常检测方法例如还可以包括操作S701。
在操作S701,在确定存在分区均衡性异常的主题的情况下,发送预警信息,其中,发送预警信息的方法包括邮件式预警、、短信预警、监控系统预警、运维网页展示预警中的至少之一。
在本公开的实施例中,邮件式预警功能实现了与Notes邮箱系统的对接,通过发送预警邮件的方式,将kafka分区均衡性需关注的集群和主题通知相关运维人员和应用负责人员进行异常问题的排查与处理。
在本公开的实施例中,监控系统报警功能实现了与监控系统的对接,结合应用关注级别,将重点关注集群的预警信息发送到预警事件列表,通知运维值班岗处理相关分区均衡性异常预警。
在本公开的实施例中,通过自主运维的平台网页进行kafka分区均衡性预警的展示,从kafka分区均衡性监测相关统计数据、分区均衡性异常的预警记录和处理记录、集群各主题生产位移随时间的变化趋势等方面进行全方位的详尽展示。
进一步地,预警信息可以包括预警类型,预警等级,存在分区均衡性异常的集群名称,存在分区均衡性异常的主题名称,存在分区均衡性异常的主题中数据异常分区的最大生产位移、最小生产位移和生产数据量等于零的分区的数量,存在分区均衡性异常的主题的生产位移随时间的变化趋势。优选地,预警信息按照预警类型,预警等级,存在分区均衡性异常的集群名称,存在分区均衡性异常的主题名称,存在分区均衡性异常的主题中数据异常分区的最大生产位移、最小生产位移和生产数据量等于零的分区的数量,存在分区均衡性异常的主题的生产位移随时间的变化趋势依次递进的方式进行排列。
例如,预警类型包括部分分区无数据、分区分布不均衡等,部分分区无数据的预警等级为第一等级,分区分布不均衡的预警等级为第二等级,第一等级要高于第二等级。在分区均衡性异常的结果为部分分区无数据的情况下,预警信息可以为:部分分区无数据->第一等级->CLUSTER1->TOPIC1->表1中主题TOPIC1的数据->表2中主题TOPIC1的数据;在分区均衡性异常的结果为分区分布不均衡的情况下,预警信息可以为:分区分布不均衡->第二等级->CLUSTER1->TOPIC3->表1中主题TOPIC3的数据->表2中主题TOPIC3的数据。
根据本公开的实施例,由于通过多种形式向用户发送预警信息,一方面,能够及时通知运维人员对分区均衡性异常问题进行排查及处理,另一方面,能够从kafka分区均衡性监测相关统计数据、分区均衡性异常的预警记录和处理记录、集群各主题生产位移随时间的变化趋势等方面全方位地向用户展示相关信息,便于用户分析分区均衡性异常的根本原因。此外,通过合理定义预警信息的具体内容及格式,能够更加直观地向用户展示相关信息。
图8示意性示出了根据本公开又一实施例的分区均衡性异常检测方法的流程图。
如图8所示,分区均衡性异常检测方法例如还可以包括操作S801~操作S803。
在操作S801,编写定时监控程序。
在操作S802,设置多线程,其中,每一个集群对应配置一个线程。
在操作S803,调用定时监控程序开启多线程并行任务,使每一个线程对与该线程对应的集群进行独立地分区均衡性异常检测。
例如,可以通过Java编写定时监控程序,遍历Kafka集群管理系统上记录的全部集群,根据集群设置不同的线程,进行多线程并行任务,每个线程对每个集群进行独立的分区均衡性检测,最终汇集所有分区的监测结果进行预警。分区均衡性检测的详细过程如前文所述,此处不再赘述。
根据本公开的实施例,通过编写定时监控程序,调用定时监控程序开启多线程并行任务进行独立地分区均衡性异常检测,一方面,能够实现定时自动对kafka分区均衡性进行检测,无需运维人员手动检测,另一方面,能够实现对大规模服务器背景下的kafka分区均衡性的检测。
需要说明的是,本公开实施例提供的分区均衡性异常检测方法使用的开发语言可以是J2EE,使用到的相关软件可以为Jetty、quartz、MYSQL等。该分区均衡性异常检测方法能够实现与性能容量管理数据库、Kafka集群管理系统、监控系统、邮箱等相关工具平台的联动,为运维人员提供了友好的、多方位的结果视图,具有较好的普适性和推广性。
综上所述,本公开实施例提供的分区均衡性异常检测方法实现了开放平台kafka分区均衡性监控范围的全覆盖,满足了数据中心规模化后开放平台相关服务器kafka分区均衡性异常监测的高效性和准确性要求。同时,分区均衡性异常检测方法主动发现异常集群和主题,及时通知专业人员,有效解决被动发现且发现不及时的问题。此外,分区均衡性异常检测方法也对其他分布式流处理平台的分区均衡性监控提出了可参考借鉴的实现方案,具备一定的推广性,可以推广到此类具有相似特性及相近监控需求的分布式监测工作中。
基于图2~图8所示的分区均衡性异常检测方法,本公开实施例还提供一种分区均衡性异常检测装置,以下将基于图1描述的场景,通过图9~图11对本公开实施例的分区均衡性异常检测装置进行描述。
图9示意性示出了根据本公开一实施例的分区均衡性异常检测装置的框图。
如图9所示,分区均衡性异常检测装置900可以包括获取模块910、以及确定模块920。
获取模块910,用于获取预设时间段内Kafka集群管理系统对集群划分的每个主题中每个分区的生产数据量。获取模块910可以用于执行前文描述的操作S201,在此不再赘述。
确定模块920,用于根据每个主题中每个分区的生产数据量确定存在分区均衡性异常的主题。确定模块920可以用于执行前文描述的操作S202,在此不再赘述。
图10示意性示出了根据本公开另一实施例的分区均衡性异常检测装置的框图。
如图10所示,分区均衡性异常检测装置900例如还可以包括预警模块930。
预警模块930,用于在确定存在分区均衡性异常的主题的情况下,发送预警信息,其中,发送预警信息的方法包括邮件式预警、、短信预警、监控系统预警、运维网页展示预警中的至少之一。预警模块930可以用于执行前文描述的操作S701,在此不再赘述。
图11示意性示出了根据本公开又一实施例的分区均衡性异常检测装置的框图。
如图11所示,分区均衡性异常检测装置900例如还可以包括编写模块940、设置模块950以及执行模块960。
编写模块940,用于编写定时监控程序。编写模块940可以用于执行前文描述的操作S801,在此不再赘述。
设置模块950,用于设置多线程,其中,每一个集群对应配置一个线程。设置模块950可以用于执行前文描述的操作S802,在此不再赘述。
执行模块960,用于调用定时监控程序开启多线程并行任务,使每一个线程对与该线程对应的集群进行独立地分区均衡性异常检测。执行模块960可以用于执行前文描述的操作S803,在此不再赘述。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块910、确定模块920、预警模块930、编写模块940、设置模块950以及执行模块960中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,获取模块910、确定模块920、预警模块930、编写模块940、设置模块950以及执行模块960中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块910、确定模块920、预警模块930、编写模块940、设置模块950以及执行模块960中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中分区均衡性异常检测装置部分与本公开的实施例中分区均衡性异常检测方法部分是相对应的,其具体实施细节及带来的技术效果也是相同的,在此不再赘述。
图12示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的框图。图12示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图12所示,根据本公开实施例的电子设备1200包括处理器1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。处理器1201例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1201还可以包括用于缓存用途的板载存储器。处理器1201可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1203中,存储有电子设备1200操作所需的各种程序和数据。处理器1201、ROM 1202以及RAM1203通过总线1204彼此相连。处理器1201通过执行ROM 1202和/或RAM1203中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1202和RAM 1203以外的一个或多个存储器中。处理器1201也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1200还可以包括输入/输出(I/O)接口1205,输入/输出(I/O)接口1205也连接至总线1204。电子设备1200还可以包括连接至I/O接口1205的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被处理器1201执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM1202和/或RAM 1203和/或ROM 1202和RAM1203以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
- 医保报销异常检测方法、装置、计算机设备和存储介质
- 异常检测方法、装置、电子设备及可读存储介质
- 基于数据分区的语种转换方法、装置、设备及存储介质
- 保险产品的测试方法及装置、存储介质及电子设备
- 产品开发方法、装置、计算机设备及存储介质
- 一种设备异常检测方法、装置、电子设备、介质及产品
- 卷烟销量异常检测方法、装置、设备、程序产品及介质