CN112367384A - 基于Kafka集群的动态限速方法、装置以及计算机设备 - Google Patents

基于Kafka集群的动态限速方法、装置以及计算机设备 Download PDF

Info

Publication number
CN112367384A
CN112367384A CN202011190715.XA CN202011190715A CN112367384A CN 112367384 A CN112367384 A CN 112367384A CN 202011190715 A CN202011190715 A CN 202011190715A CN 112367384 A CN112367384 A CN 112367384A
Authority
CN
China
Prior art keywords
target
kafka
data
node
speed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011190715.XA
Other languages
English (en)
Other versions
CN112367384B (zh
Inventor
张辰安
付航
郑志升
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202011190715.XA priority Critical patent/CN112367384B/zh
Publication of CN112367384A publication Critical patent/CN112367384A/zh
Application granted granted Critical
Publication of CN112367384B publication Critical patent/CN112367384B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

本申请公开了一种基于Kafka集群的动态限速方法,该方法包括:获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值;当任一所述输入输出指标值大于第一阈值时,若所述目标Kafka节点的数据读出率小于或等于预设的第二阈值,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区并调整其写入速度;若所述数据读出率大于所述第二阈值,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者并调整其读出速度。本申请还提供一种基于Kafka集群的动态限速装置、计算机设备以及计算机可读存储介质。本申请能够实现对Kafka集群的精确限速,提高了限速执行效率。

Description

基于Kafka集群的动态限速方法、装置以及计算机设备
技术领域
本申请涉及互联网技术领域,尤其涉及一种基于Kafka集群的动态限速方法、装置、计算机设备及计算机可读存储介质。
背景技术
随着信息时代的到来,对于大数据的相关数据处理能力对信息技术的发展尤为重要。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。而且,现有的大部分大数据处理框架,比如Storm(Twitter开源的分布式实时大数据处理框架)、Flink(Apache软件基金会开发的开源流处理框架)、Spark(专为大规模数据处理而设计的快速通用的计算引擎)都支持读出和写入Kafka的数据,因此,Kafka被广泛应用于大数据应用领域。
然而,在实际的生产环境中,Kafka被多个数据生产方/消费方一起使用,如果某一方写入/读出的数据量暴增达到Kafka集群的性能瓶颈的话,整个集群将达到不可用的状态,严重影响到其他生产方/消费方,这个风险在任何的业务系统里是不能容忍的。
为了避免Kafka集群不可用的情况,目前,通过在Kafka集群进行监控,若发现写入/读出的数据量异常,则查找出Kafka集群中的对应的Kafka节点进行限速;或者查找出对应的生产方/消费方进行限速。但是,现有的这种限速方式,往往会降低Kafka节点的服务效率,也会影响很多“无辜”的生产方/消费方的业务状态。也就是说,现有的限速方式,精确度不高,执行效率低下。
发明内容
有鉴于此,本申请提出一种基于Kafka集群的动态限速方法、装置、计算机设备及计算机可读存储介质,能够解决现有技术中对基于Kafka集群执行限速过程的限速精确度不高,执行效率低下的问题。
首先,为实现上述目的,本申请提供一种基于Kafka集群的动态限速方法,所述方法包括:
获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值,所述目标Kafka节点为所述Kafka集群中的任一Kafka节点;判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值;当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率;当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区,调整所述第一目标主题分区的写入速度;当所述数据读出率大于所述第二阈值时,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,其中,所述第二目标主题分区为所述目标Kafka节点中的任一主题分区,调整所述目标消费者对所述第二目标主题分区的读出速度。
在一个例子中,所述数据读出率=读出数据量/(读出数据量+写入数据量)。
在一个例子中,所述输入输出指标值包括磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间中的任一项,所述获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值包括:采集所述目标Kafka节点当前时间段的磁盘输入/输出数据量;根据所述磁盘输入/输出数据量计算出所述目标Kafka节点的磁盘输入速度与输出速度之和以及磁盘输入输出使用率;采集所述目标Kafka节点接收到的目标消息的写入请求,以及所述目标消息写入磁盘时间,所述目标消息为所述目标Kafka节点接收到的任一消息;根据所述目标消息的写入请求和写入磁盘时间计算出所述目标Kafka节点的生产百分位时间。
在一个例子中,所述第一阈值包括分别对应于磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间的第一阈值A,第一阈值B或第一阈值C中的至少任一项。
在一个例子中,所述查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区包括:获取所述目标Kafka节点下的每一个主题分区的写入数据量并进行大小排序;将写入数据量超过所述第三阈值且处于排序前面预设的Z位之内的所有主题分区作为第一目标主题分区。
在一个例子中,所述查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作包括:判断每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据,所述历史数据为所述第二目标主题分区的页面缓存中的预设时间段之前的数据;当消费者在当前时间段内读出了所述第二目标主题分区对应的历史数据,则判断为所述消费者为目标消费者。
在一个例子中,所述判断每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据包括:获取所述目标Kafka节点的数据写入速度X,以及所述目标主题分区的数据写入速度Y,根据所述目标Kafka节点的内存大小M,计算出所述目标Kafka节点的中页面缓存偏移量N,其中,N=(m*M/X)*Y,m为预设常数;判断所述页面缓存偏移量N是否大于预设的页面缓存容量值;当所述页面缓存偏移量N大于所述页面缓存容量值时,则将所述页面缓存偏移量之前的数据作为历史数据;通过日志信息查找出每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据。
此外,为实现上述目的,本申请还提供一种基于Kafka集群的动态限速装置,所述装置包括:
获取模块,用于获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值,所述目标Kafka节点为所述Kafka集群中的任一Kafka节点;判断模块,用于判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值;计算模块,用于当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率;查找模块,用于当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区;调整模块,用于调整所述第一目标主题分区的写入速度;所述查找模块,还用于当所述数据读出率大于所述第二阈值时,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,其中,所述第二目标主题分区为所述目标Kafka节点中的任一主题分区;所述调整模块,还用于调整所述目标消费者对所述第二目标主题分区的读出速度。
进一步地,本申请还提出一种计算机设备,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述的基于Kafka集群的动态限速方法的步骤。
进一步地,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于Kafka集群的动态限速方法的步骤。
相较于现有技术本申请所提出的基于Kafka集群的动态限速方法、装置、计算机设备及计算机可读存储介质,能够获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值;判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值,当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率;当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区,调整所述第一目标主题分区的写入速度;当所述数据读出率大于所述第二阈值时,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,其中,所述第二目标主题分区为所述目标Kafka节点中的任一主题分区,调整所述目标消费者对所述第二目标主题分区的读出速度。本申请能够在目标Kafka节点输入输出指标过高的情况下,当写入数据量过高时限制主题分区的写入速度;当读出数据量过高时限制消费者读出速度,因此能够实现对Kafka集群的精确限速,提高了限速执行效率。
附图说明
图1是本申请一实施例的应用环境示意图;
图2是本申请基于Kafka集群的动态限速方法一具体实施例的流程示意图;
图3是本申请一具体实施例的效果图;
图4是本申请基于Kafka集群的动态限速装置一实施例的程序模块示意图;
图5是本申请计算机设备一可选的硬件架构的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
图1是本申请一实施例的应用环境示意图。参阅图1所示,所述计算机设备1与Kafka集群连接,并与所述Kafka集群对应的生产者和消费者连接。在本实施例中,所述生产者和所述消费者可作为手机、平板、便携设备、PC机或者服务器;其中,所述生产者向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即分类成不同主题的消息;所述消费者通过与Kafka集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理。
所述计算机设备1则可以获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值;然后当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率;接着判断所述数据读出率是否小于或等于预设的第二阈值时,是的话查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区,调整所述第一目标主题分区的写入速度;否则,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,调整所述目标消费者对所述第二目标主题分区的读出速度。
在本实施例中,所述计算机设备1可作为手机、平板、便携设备、PC机或者服务器等电子设备;也可以作为独立的功能模块,附加在所述Kafka集群上以实现对基于Kafka集群的动态限速的功能。
实施例一
图2是本申请基于Kafka集群的动态限速方法一实施例的流程示意图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以图1所示的应用环境为例,以计算机设备为执行主体进行示例性描述。
如图2所示,所述基于Kafka集群的动态限速方法可以包括步骤S200~S208,其中:
步骤S200,获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值,所述目标Kafka节点为所述Kafka集群中的任一Kafka节点。
具体的,所述计算机设备1与Kafka集群连接,并与所述Kafka集群对应的生产者和消费者连接。所述计算机设备1能够获取到所述Kafka集群中的每一个Kafka节点的性能数据,例如,所述计算机设备部1可以通过节点中的Exporter服务或者现有的Jmx工具采集每一个Kafka节点在预设时间段内的性能参数,包括:Kafka节点中的CPU信息,内存信息,磁盘信息,以及输入/输出接口的频宽,输入/输出延迟,磁盘输入/输出使用率;同时监测所述Kafka节点上的每一个主题分区,从而获取到每一个主题分区对应的消息写入量,数据写入量,数据读出量,以及生产者时间,缓存数据写入到磁盘的时间,以及接收到的订阅请求量和相关的延迟时间等。
在本实施例中,所述输入输出指标值包括磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间中的任一项,因此,所述计算机设备1获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值包括:采集所述目标Kafka节点当前时间段的磁盘输入/输出数据量;根据所述磁盘输入/输出数据量计算出所述目标Kafka节点的磁盘输入速度与输出速度之和以及磁盘输入输出使用率;以及,采集所述目标Kafka节点接收到的目标消息的写入请求,以及所述目标消息写入磁盘时间,所述目标消息为所述目标Kafka节点接收到的任一消息;根据所述目标消息的写入请求和写入磁盘时间计算出所述目标Kafka节点的生产百分位时间。
其中,所述计算机设备1通过采集所述目标Kafka节点当前时间段的磁盘输入/输出数据量,然后将所述磁盘输入/输出数据量与所述当前时间段进行除以运算,得到对应的磁盘输入速度与输出速度,因此,进一步得到磁盘输入速度与输出速度之和;并且,磁盘的输入输出接口具有一定的频宽,因此,在计算得到磁盘输入速度与输出速度之和后,可以进一步计算得到磁盘输入输出使用率。而百分位时间,可以认为是预设的百分之比,例如,99%或者95%,的情况下一条消息自生产者生产出来到被发送至所述目标Kafka节点之间的时间。因此,所述计算机设备1通过统计接收到的每一个消息中的生产时间以及写入到磁盘的时间差,从而计算得到所述目标Kafka节点的生产百分位时间。
步骤S202,判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值。
步骤S204,当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率。
具体的,所述计算机设备1在获取到所述目标Kafka节点的上述输入输出指标值之后,则会判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值。在本实施例中,由于所述输入输出指标值包括磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间中的任一项,因此,所述计算机设备1预先设置所述第一阈值包括分别对应于磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间的第一阈值A,第一阈值B或第一阈值C中的至少任一项。所述计算机设备1判断所述输入输出指标值是否大于所述第一阈值的过程则包括:判断所述磁盘输入速度与输出速度之和是否大于所述第一阈值A,或者判断磁盘输入输出使用率是否大于所述第一阈值B,或者判断生产百分位时间是否大于所述第一阈值C;当有任一个输入输出指标值大于对应的第一阈值,那么说明所述目标Kafka节点出现了输入输出数据量过大的问题。
因此,所述计算机设备1进一步计算所述目标Kafka节点的数据读出率,所述数据读出率实际上是所述目标Kafka节点出现输入输出数据量过大的情况下,其中的数据读出量的比值。在本实施例中,所述数据读出率=读出数据量/(读出数据量+写入数据量)。所述计算机设备1通过计算所述数据读出率,然后根据所述数据读出率判断所述目标Kafka节点在当前时间段内,是读出数据量过高还是写入数据量过高。
步骤S206,当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区,调整所述第一目标主题分区的写入速度。
在本实施例中,所述计算机设备1在计算出所述数据读出率之后,则将所述数据读出率与预设的第二阈值进行比较,当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区。具体的,所述计算机设备1查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区包括:获取所述目标Kafka节点下的每一个主题分区的写入数据量并进行大小排序;将写入数据量超过所述第三阈值且处于排序前面预设的Z位之内的所有主题分区作为第一目标主题分区;接着对所述第一目标主题分区的写入速度进行限速。例如,所述计算机设备1查找出所述目标Kafka节点下的写入数据量最多的三个主题分区为主题分区1,主题分区2和主题分区3,那么,所述计算机设备1则会分别获取主题分区1,主题分区2和主题分区3的当前写入速度,并将其下调50%,从而限制主题分区1,主题分区2和主题分区3的写入速度。通过这种方式,可以在所述目标Kafka节点写入数据产生数据量陡增的情况下,找出数据量陡增贡献量最高的几个主题分区,然后限制其写入速度,从而腾出数据输入频宽给其他主题分区,达到均衡所述目标Kafka节点的各个主题分区的数据写入负荷。
步骤S208,当所述数据读出率大于所述第二阈值时,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,其中,所述第二目标主题分区为所述目标Kafka节点中的任一主题分区,调整所述目标消费者对所述第二目标主题分区的读出速度。
当然,如果所述计算机设备1判断出所述数据读出率大于所述第二阈值时,说明当前时间段内所述目标Kafka节点的读出数据量过高,因此需要对消费者从所述目标Kafka节点读出数据的读出速度进行限速。在本实施例中,所述计算机设备1查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,然后调整所述目标消费者对所述第二目标主题分区的读出速度。
其中,所述计算机设备1查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作包括:判断每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据,所述历史数据为所述第二目标主题分区的页面缓存中的预设时间段之前的数据;当消费者在当前时间段内读出了所述第二目标主题分区对应的历史数据,则判断为所述消费者为目标消费者。
具体的,生产者在将消息写入到所述目标Kafka节点的过程中,需要将消息写入到所述目标Kafka节点的页面缓存中,然后页面缓存将消息推到磁盘中,每一次对消息的操作,都会保留一个偏移,标记当前写入位置;同理,消费者在将消息从页面缓存中拉取的过程中,也会保留一个偏移,标记当前读出的位置。因此,所述计算机设备1可以通过消息数据在页面缓存中的偏移量,判断生产者或消费者写入或读出的消息数据的位置。由于页面缓存的数据时刻发生变化,新写入的数据很快就会被持久化到磁盘中,因此,所述计算机设备1检测到消费者读出的数据是所述页面缓存的预设时间段之前的数据,则可以判断所述消费者读出的是历史数据,是已持久化到磁盘的数据。
对于所述目标Kafka节点来说,从页面缓存中读出数据是优先的,也是最快的,因此,只有从磁盘中读出数据才会导致读出数据量过大,影响到所述目标Kafka节点的输入输出指标值。
在一具体实施例中,所述计算机设备1判断每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据包括:获取所述目标Kafka节点的数据写入速度X,以及所述目标主题分区的数据写入速度Y,根据所述目标Kafka节点的内存大小M,计算出所述目标Kafka节点的中页面缓存偏移量N,其中,N=(m*M/X)*Y,m为预设常数,m为预先设置的所述Kafka节点中用于存储页面缓存的消息数据所占的内存比例,例如0.8;判断所述页面缓存偏移量N是否大于预设的页面缓存容量值;当所述页面缓存偏移量N大于所述页面缓存容量值时,则将所述页面缓存偏移量之前的数据作为历史数据;通过日志信息查找出每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据。
当所述计算机设备1查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于所述第四阈值的目标消费者后,则将所述目标消费者对所述第二目标主题分区的读出速度进行下调;从而限制所述目标消费者对于所述第二目标主题分区的数据读出,均衡了其他消费者从所述目标Kafka节点的其他主题分区的数据读出速度。
如图3所示,图3是本申请一具体实施例的流程效果图。在本实施例中,所述计算机设备1可作为独立的功能模块,即Kafka保护模块。Kafka保护模块与Kafka集群连接,可以通过Export服务获取Kafka集群中的每一个Kafka节点的性能数据,然后计算出所述Kafka节点对应的输入输出指标值,并判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值,并在所述输入输出指标值大于所述第一阈值时,对所述Kafka节点中对应的主题分区进行写入速度限速,或者对用户端中的消费者(图中未示出)进行读出速度限速。
从上文可知,本实施例所提出的基于Kafka集群的动态限速方法能够获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值;判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值,当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率;当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区,调整所述第一目标主题分区的写入速度;当所述数据读出率大于所述第二阈值时,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,其中,所述第二目标主题分区为所述目标Kafka节点中的任一主题分区,调整所述目标消费者对所述第二目标主题分区的读出速度。本申请能够在目标Kafka节点输入输出指标过高的情况下,当写入数据量过高时限制主题分区的写入速度;当读出数据量过高时限制消费者读出速度,因此能够实现对Kafka集群的精确限速,提高了限速执行效率。
实施例二
图4示意性示出了根据本申请实施例二的基于Kafka集群的动态限速装置的框图,该基于Kafka集群的动态限速装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
如图4所示,该基于Kafka集群的动态限速装置400可以包括获取模块410、判断模块420、计算模块430、查找模块440和调整模块450,其中:
获取模块410,用于获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值,所述目标Kafka节点为所述Kafka集群中的任一Kafka节点。
判断模块420,用于判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值。
计算模块430,用于当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率。所述数据读出率=读出数据量/(读出数据量+写入数据量)。
查找模块440,用于当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区。
调整模块450,用于调整所述第一目标主题分区的写入速度。
所述查找模块440,还用于当所述数据读出率大于所述第二阈值时,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,其中,所述第二目标主题分区为所述目标Kafka节点中的任一主题分区。
所述调整模块450,还用于调整所述目标消费者对所述第二目标主题分区的读出速度。
在示例性的实施例中,所述输入输出指标值包括磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间中的任一项,获取模块410,还用于:采集所述目标Kafka节点当前时间段的磁盘输入/输出数据量;根据所述磁盘输入/输出数据量计算出所述目标Kafka节点的磁盘输入速度与输出速度之和以及磁盘输入输出使用率;采集所述目标Kafka节点接收到的目标消息的写入请求,以及所述目标消息写入磁盘时间,所述目标消息为所述目标Kafka节点接收到的任一消息;根据所述目标消息的写入请求和写入磁盘时间计算出所述目标Kafka节点的生产百分位时间。其中,所述第一阈值包括分别对应于磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间的第一阈值A,第一阈值B或第一阈值C中的至少任一项。
在示例性的实施例中,查找模块440,还用于获取所述目标Kafka节点下的每一个主题分区的写入数据量并进行大小排序;将写入数据量超过所述第三阈值且处于排序前面预设的Z位之内的所有主题分区作为第一目标主题分区。
在示例性的实施例中,查找模块440,还用于:判断每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据,所述历史数据为所述第二目标主题分区的页面缓存中的预设时间段之前的数据;当消费者在当前时间段内读出了所述第二目标主题分区对应的历史数据,则判断为所述消费者为目标消费者。以及,获取所述目标Kafka节点的数据写入速度X,以及所述目标主题分区的数据写入速度Y,根据所述目标Kafka节点的内存大小M,计算出所述目标Kafka节点的中页面缓存偏移量N,其中,N=(m*M/X)*Y,m为预设常数;判断所述页面缓存偏移量N是否大于预设的页面缓存容量值;当所述页面缓存偏移量N大于所述页面缓存容量值时,则将所述页面缓存偏移量之前的数据作为历史数据;通过日志信息查找出每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据。
实施例三
图5示意性示出了根据本申请实施例三的适于实现基于Kafka集群的动态限速方法的计算机设备1的硬件架构示意图。本实施例中,计算机设备1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是具有网关功能的机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,计算机设备1至少包括但不限于:可通过系统总线相互通信链接存储器510、处理器520、网络接口530。其中:
存储器510至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器510可以是计算机设备1的内部存储模块,例如该计算机设备1的硬盘或内存。在另一些实施例中,存储器510也可以是计算机设备1的外部存储设备,例如该计算机设备1上配备的插接式硬盘,智能存储卡(SmartMedia Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器510还可以既包括计算机设备1的内部存储模块也包括其外部存储设备。本实施例中,存储器510通常用于存储安装于计算机设备1的操作系统和各类应用软件,例如基于Kafka集群的动态限速方法的程序代码等。此外,存储器510还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器520在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器520通常用于控制计算机设备1的总体操作,例如执行与计算机设备1进行数据交互或者通信相关的控制和处理等。本实施例中,处理器520用于运行存储器510中存储的程序代码或者处理数据。
网络接口530可包括无线网络接口或有线网络接口,该网络接口530通常用于在计算机设备1与其他计算机设备之间建立通信链接。例如,网络接口530用于通过网络将计算机设备1与外部终端相连,在计算机设备1与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code DivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图5仅示出了具有部件510-530的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器510中的基于Kafka集群的动态限速方法的程序代码还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器520)所执行,以完成本申请实施例。
实施例四
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现如实施例一所述的基于Kafka集群的动态限速方法步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中服务平台的组件管理方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。

Claims (10)

1.一种基于Kafka集群的动态限速方法,其特征在于,所述方法包括:
获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值,所述目标Kafka节点为所述Kafka集群中的任一Kafka节点;
判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值;
当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率;
当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区,调整所述第一目标主题分区的写入速度;
当所述数据读出率大于所述第二阈值时,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,其中,所述第二目标主题分区为所述目标Kafka节点中的任一主题分区,调整所述目标消费者对所述第二目标主题分区的读出速度。
2.如权利要求1所述的基于Kafka集群的动态限速方法,其特征在于,所述数据读出率=读出数据量/(读出数据量+写入数据量)。
3.如权利要求1或2中任一项所述的基于Kafka集群的动态限速方法,其特征在于,所述输入输出指标值包括磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间中的任一项,所述获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值包括:
采集所述目标Kafka节点当前时间段的磁盘输入/输出数据量;
根据所述磁盘输入/输出数据量计算出所述目标Kafka节点的磁盘输入速度与输出速度之和以及磁盘输入输出使用率;
采集所述目标Kafka节点接收到的目标消息的写入请求,以及所述目标消息写入磁盘时间,所述目标消息为所述目标Kafka节点接收到的任一消息;
根据所述目标消息的写入请求和写入磁盘时间计算出所述目标Kafka节点的生产百分位时间。
4.如权利要求3所述的基于Kafka集群的动态限速方法,其特征在于,所述第一阈值包括分别对应于磁盘输入速度与输出速度之和,磁盘输入输出使用率或生产百分位时间的第一阈值A,第一阈值B或第一阈值C中的至少任一项。
5.如权利要求1所述的基于Kafka集群的动态限速方法,其特征在于,所述查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区包括:
获取所述目标Kafka节点下的每一个主题分区的写入数据量并进行大小排序;
将写入数据量超过所述第三阈值且处于排序前面预设的Z位之内的所有主题分区作为第一目标主题分区。
6.如权利要求1所述的基于Kafka集群的动态限速方法,其特征在于,所述查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作包括:
判断每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据,所述历史数据为所述第二目标主题分区的页面缓存中的预设时间段之前的数据;
当消费者在当前时间段内读出了所述第二目标主题分区对应的历史数据,则判断为所述消费者为目标消费者。
7.如权利要求6所述的基于Kafka集群的动态限速方法,其特征在于,所述判断每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据包括:
获取所述目标Kafka节点的数据写入速度X,以及所述目标主题分区的数据写入速度Y,根据所述目标Kafka节点的内存大小M,计算出所述目标Kafka节点的中页面缓存偏移量N,其中,N=(m*M/X)*Y,m为预设常数;
判断所述页面缓存偏移量N是否大于预设的页面缓存容量值;
当所述页面缓存偏移量N大于所述页面缓存容量值时,则将所述页面缓存偏移量之前的数据作为历史数据;
通过日志信息查找出每一个消费者当前时间段内是否读出了所述第二目标主题分区对应的历史数据。
8.一种基于Kafka集群的动态限速装置,其特征在于,所述装置包括:
获取模块,用于获取Kafka集群中目标Kafka节点在当前时间段的多个输入输出指标值,所述目标Kafka节点为所述Kafka集群中的任一Kafka节点;
判断模块,用于判断所述多个输入输出指标值中的至少任一项是否大于预设的第一阈值;
计算模块,用于当所述输入输出指标值大于所述第一阈值时,计算出所述目标Kafka节点的数据读出率;
查找模块,用于当所述数据读出率小于或等于预设的第二阈值时,查找出写入数据量超过预设的第三阈值的主题分区作为第一目标主题分区;
调整模块,用于调整所述第一目标主题分区的写入速度;
所述查找模块,还用于当所述数据读出率大于所述第二阈值时,查找出对所述目标Kafka节点中第二目标主题分区对应的磁盘执行数据读出操作且读出速度大于预设的第四阈值的消费者作为目标消费者,其中,所述第二目标主题分区为所述目标Kafka节点中的任一主题分区;
所述调整模块,还用于调整所述目标消费者对所述第二目标主题分区的读出速度。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-7任一项所述的基于Kafka集群的动态限速方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-7中任一项所述的基于Kafka集群的动态限速方法的步骤。
CN202011190715.XA 2020-10-30 2020-10-30 基于Kafka集群的动态限速方法、装置以及计算机设备 Active CN112367384B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011190715.XA CN112367384B (zh) 2020-10-30 2020-10-30 基于Kafka集群的动态限速方法、装置以及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011190715.XA CN112367384B (zh) 2020-10-30 2020-10-30 基于Kafka集群的动态限速方法、装置以及计算机设备

Publications (2)

Publication Number Publication Date
CN112367384A true CN112367384A (zh) 2021-02-12
CN112367384B CN112367384B (zh) 2022-06-03

Family

ID=74513852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011190715.XA Active CN112367384B (zh) 2020-10-30 2020-10-30 基于Kafka集群的动态限速方法、装置以及计算机设备

Country Status (1)

Country Link
CN (1) CN112367384B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114205486A (zh) * 2022-01-27 2022-03-18 卡莱特云科技股份有限公司 一种基于Scaler的视频文件实时缩放方法及视频处理器
CN114500546A (zh) * 2022-01-25 2022-05-13 中国农业银行股份有限公司 基于负载均衡集群的通信消息发送方法、装置及设备
CN114500546B (zh) * 2022-01-25 2024-04-30 中国农业银行股份有限公司 基于负载均衡集群的通信消息发送方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105631026A (zh) * 2015-12-30 2016-06-01 北京奇艺世纪科技有限公司 一种安全数据分析系统
CN110688254A (zh) * 2019-09-06 2020-01-14 北京达佳互联信息技术有限公司 一种数据同步方法、装置、电子设备及存储介质
CN110928940A (zh) * 2019-11-21 2020-03-27 江苏满运软件科技有限公司 基于kafka集群的数据写入方法、装置、电子设备、存储介质
CN111427859A (zh) * 2020-03-25 2020-07-17 京东数字科技控股有限公司 一种消息处理方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105631026A (zh) * 2015-12-30 2016-06-01 北京奇艺世纪科技有限公司 一种安全数据分析系统
CN110688254A (zh) * 2019-09-06 2020-01-14 北京达佳互联信息技术有限公司 一种数据同步方法、装置、电子设备及存储介质
CN110928940A (zh) * 2019-11-21 2020-03-27 江苏满运软件科技有限公司 基于kafka集群的数据写入方法、装置、电子设备、存储介质
CN111427859A (zh) * 2020-03-25 2020-07-17 京东数字科技控股有限公司 一种消息处理方法、装置、电子设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114500546A (zh) * 2022-01-25 2022-05-13 中国农业银行股份有限公司 基于负载均衡集群的通信消息发送方法、装置及设备
CN114500546B (zh) * 2022-01-25 2024-04-30 中国农业银行股份有限公司 基于负载均衡集群的通信消息发送方法、装置及设备
CN114205486A (zh) * 2022-01-27 2022-03-18 卡莱特云科技股份有限公司 一种基于Scaler的视频文件实时缩放方法及视频处理器

Also Published As

Publication number Publication date
CN112367384B (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
CN111966289B (zh) 基于Kafka集群的分区优化方法和系统
WO2020253111A1 (zh) 区块链节点的自动扩容方法、装置、运维终端及存储介质
CN107656807B (zh) 一种虚拟资源的自动弹性伸缩方法及装置
CN109257758B (zh) 一种网络扩容方法及装置
CA3044156C (en) Adaptive service timeouts
CN111277640B (zh) 用户请求处理方法、装置、系统、计算机设备和存储介质
CN111723018A (zh) 性能压力测试方法、装置、设备及存储介质
CN112367384B (zh) 基于Kafka集群的动态限速方法、装置以及计算机设备
CN105471938B (zh) 服务器负载管理方法及装置
CN114490078A (zh) 一种微服务的动态缩扩容方法、装置及设备
CN111159009B (zh) 一种日志服务系统的压力测试方法及装置
CN110347546B (zh) 监控任务动态调整方法、装置、介质及电子设备
CN113992378B (zh) 一种安全监测方法、装置、电子设备及存储介质
CN106686082B (zh) 存储资源调整方法及管理节点
CN116226071A (zh) 数据统计方法、装置、设备及存储介质
CN115811483A (zh) 一种网络状态监测方法、装置、电子设备和存储介质
CN111913852B (zh) 存储系统的健康管理方法和装置
CN113392131A (zh) 数据处理方法、装置及计算机设备
CN115333917A (zh) 一种cdn异常检测方法及装置
CN109992391B (zh) 连接管理方法和系统
CN112306824B (zh) 磁盘性能评估方法、系统、设备及计算机可读存储介质
WO2014173129A1 (en) Mobile terminal flow identification method and apparatus
CN112306823B (zh) 磁盘管理方法、系统、设备及计算机可读存储介质
CN113254209B (zh) 一种容量管理方法、装置、电子设备及可读存储介质
CN114650252B (zh) 基于企业服务总线的路由方法、装置及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant