CN111966289A - 基于Kafka集群的分区优化方法和系统 - Google Patents

基于Kafka集群的分区优化方法和系统 Download PDF

Info

Publication number
CN111966289A
CN111966289A CN202010812659.2A CN202010812659A CN111966289A CN 111966289 A CN111966289 A CN 111966289A CN 202010812659 A CN202010812659 A CN 202010812659A CN 111966289 A CN111966289 A CN 111966289A
Authority
CN
China
Prior art keywords
partition
disk
information
optimization
kafka cluster
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
CN202010812659.2A
Other languages
English (en)
Other versions
CN111966289B (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 CN202010812659.2A priority Critical patent/CN111966289B/zh
Publication of CN111966289A publication Critical patent/CN111966289A/zh
Application granted granted Critical
Publication of CN111966289B publication Critical patent/CN111966289B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种基于Kafka集群的分区优化方法,所述方法包括:获取各个节点服务器的运行指标数据,所述运作指标数据包括所述节点服务器运行时的CPU信息、内存信息以及磁盘IO信息;获取各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息;根据获取到的所述运行指标数据、所述对应关系以及所述分区的IO信息构建所述Kafka集群的负载模型;根据所述负载模型与预设的优化目标生成对应的优化任务;将所述优化任务发送至所述Kafka集群,以使所述Kafka集群根据所述优化任务执行分区优化操作,其中,所述分区优化操作包含分区迁移操作和分区扩容操作中的至少一种。本申请可以减少数据丢失。

Description

基于Kafka集群的分区优化方法和系统
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种基于Kafka集群的分区优化方法、系统、计算机设备及计算机可读存储介质。
背景技术
kafka是一个分布式,分区的,多副本的,多订阅者的消息发布订阅系统(分布式MQ系统),可以用于搜索日志,监控日志,访问日志等。Kafka架构在缓存数据时一般会通过多个节点服务器(broker)组成一个Kafka集群,并且以分区(partition)为存储单元进行数据缓存的,然而,发明人发现,现有的Kafka集群在以分区为存储单元时,各个分区在节点服务器下的磁盘的分布是不均匀,由于分区分布的不均匀,导致部分磁盘的IO使用率较高,进而使得Kafka集群在传输数据时会发生数据丢失的情况。
发明内容
本申请实施例的目的是提供一种基于Kafka集群的分区优化方法、系统、计算机设备及计算机可读存储介质,可以用于解决Kafka集群在传输数据时会发生数据丢失的问题。
本申请实施例的一个方面提供了一种基于Kafka集群的分区优化方法,所述方法包括:
获取各个节点服务器的运行指标数据,所述运作指标数据包括所述节点服务器运行时的CPU信息、内存信息以及磁盘IO信息;
获取各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息;
根据获取到的所述运行指标数据、所述对应关系以及所述分区的IO信息构建所述Kafka集群的负载模型;
根据所述负载模型与预设的优化目标生成对应的优化任务;
将所述优化任务发送至所述Kafka集群,以使所述Kafka集群根据所述优化任务执行分区优化操作,其中,所述分区优化操作包含分区迁移操作和分区扩容操作中的至少一种。
可选的,所述负载模型包括Kafka集群包含的各个磁盘的IO信息,每一个磁盘中包含的分区的IO信息和分区流量信息,以及各个磁盘的内存信息。
可选的,所述优化目标包括所述Kafka集群包含的所有磁盘的IO使用率的平均值与所有磁盘中IO使用率的最大值的差值比例,所述根据所述负载模型与预设的优化目标生成对应的优化任务包括:
根据所述Kafka集群包含的各个磁盘的IO信息计算所有磁盘IO使用率的平均值;
根据所述差值比例、所述Kafka集群包含的各个磁盘的IO信息以及所述平均值确定待优化的磁盘;
获取所述待优化的磁盘中包含的各个分区的IO信息,并将IO使用率最大的分区作为所述优化任务中的待迁移分区;
获取所述待优化的磁盘对应的节点服务器下的其他磁盘的IO信息,并根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘。
可选的,根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘包括:
根据其他磁盘的IO信息选取IO使用率最低的磁盘作为所述待迁移分区的目标迁移磁盘。
可选的,根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘之后,还包括:
判断所述目标迁移磁盘是否符合预设条件;
若不符合预设条件,则选择其他节点服务器下的磁盘中IO使用率最低的磁盘作为所述待迁移分区的迁移磁盘,其中,所述其他节点服务器为所述Kafka集群中除所述待优化的磁盘对应的节点服务器之外的节点服务器。
可选的,所述优化目标包括第一磁盘容量占比,所述根据所述负载模型与预设的优化目标生成对应的优化任务包括:
获取所述Kafka集群包含的各个磁盘的内存信息,并根据获取到的内存信息确定各个磁盘的第二磁盘容量占比;
根据所述第一磁盘容量占比与所述第二磁盘容量占比确定待优化的磁盘;
获取所述待优化的磁盘中包含的各个分区的流量信息,并将流量最大的分区作为所述优化任务中的待扩容分区。
可选的,所述方法还包括:
将IO使用率大于预设值的分区推送至与所述Kafka集群连接的Zookeeper,以使所述Zookeeper通过网关将所述将IO使用率大于预设值的分区剔除。
本申请实施例的再一个方面提供了一种基于Kafka集群的分区优化装置,所述装置包括:
第一获取模块,用于获取各个节点服务器的运行指标数据,所述运作指标数据包括所述节点服务器运行时的CPU信息、内存信息以及磁盘IO信息;
第二获取模块,用于获取各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息;
构建模块,用于根据获取到的所述运行指标数据、所述对应关系以及所述分区的IO信息构建所述Kafka集群的负载模型;
生成模块,用于根据所述负载模型与预设的优化目标生成对应的优化任务;
发送模块,用于将所述优化任务发送至所述Kafka集群,以使所述Kafka集群根据所述优化任务执行分区优化操作,其中,所述分区优化操作包含分区迁移操作和分区扩容操作中的至少一种。
本申请实施例的再一个方面提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,上述处理器执行上述计算机程序时用于实现如上任一项所述的基于Kafka集群的分区优化方法的步骤。
本申请实施例的又一个方面提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时用于实现如上任一项所述的基于Kafka集群的分区优化方法的步骤。
本申请实施例提供的基于Kafka集群的分区优化方法、系统、计算机设备及计算机可读存储介质,通过获取各个节点服务器的运行指标数据以及各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息,进而根据获取到的数据来构建Kafka集群的负载模型,以根据所述负载模型与预设的优化目标生成对应的优化任务,并将该优化任务发送给Kafka集群,从而使得Kafka集群可以根据该优化任务对磁盘上的分区进行迁移操作或者扩容操作,这样磁盘上分布的分区的IO使用率将不会过高,进而将减少Kafka集群在传输数据时发生数据丢失的情况。
附图说明
图1示意性示出了流式基于Kafka集群的分区优化装置的系统架构图;
图2示意性示出了根据本申请一实施例的基于Kafka集群的分区优化方法的流程图;
图3为意性示出了根据所述负载模型与预设的优化目标生成对应的优化任务的步骤细化流程示意图;
图4示意性示出了根据本申请另一实施例的基于Kafka集群的分区优化方法的流程图;
图5示意性示出了根据所述负载模型与预设的优化目标生成对应的优化任务的步骤细化流程图;
图6示意性示出了根据本申请实施例的基于Kafka集群的分区优化装置的程序模块图;以及
图7示意性示出了根据本申请实施例的适于实现基于Kafka集群的分区优化方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
图1示意性示出了根据本申请实施例的流式数据传输系统,所述流式数据传输系统在于提供流式的数据传输服务,如用于实时流和离线流两大场景的数据收集和分发。实时流场景,对应于秒级别的数据时效性,主要用于将数据写入到kafka、hbase等数据库中。离线流场景,对应于小时级别或天级别的数据时效性,主要用于将数据写入到hdfs、hive等数据库中。所述流式数据传输系统可以由下几部分组成:数据源1、网络路由层2、数据缓冲层3、数据分发层4、数据存储层5和监控模块6等。
所述数据源1,可以是内部数据源,也可以连接外部数据源的数据接口。所述数据源1中可以有多种格式的数据,例如,APP和Web的上报数据是HTTP(HyperText TransferProtocol,超文本传输协议)格式的数据,服务端的内部通信数据是RPC(Remote ProcedureCall,远程过程调用)格式的数据。
所述网络路由层2,可以通过一个或多个网关节点实现,用于协议解析、打包和压缩等,以保障数据在不丢失的前提下写入到数据缓冲层3。具体的,所述网络路由层2被配置连接于数据源1,并可以适应各种不同的业务场景和数据协议,例如,被配置用于兼容解析多种协议的数据,诸如基于HTTP(HyperText Transfer Protocol,超文本传输协议)协议的APP和Web数据,和基于RPC协议的服务端的内部通信数据。解析得到的数据可以被转换为标准格式数据库文件并被存储到数据缓冲层3。
所述数据缓冲层3,可以通过消息分发订阅系统或上述系统集群实现。在一些实施例中,数据缓冲层3可以由多套kafka cluster(kafka集群)组成,起到数据削峰填谷的作用。不同重要性、优先级、数据吞吐量的数据,可以被分流到不同的kafka cluster中,以保障不同类型数据的价值,避免系统故障影响整体数据。
数据分发层4,可以由流量分发系统(Collector)实现,用于内容转换和分发存储,即保障数据从数据缓冲层3获取并写入到数据存储层5中对应的存储终端。具体的,所述数据分发层4用于数据的分发落地,支持的分发场景包括HDFS(Hadoop Distributed FileSystem,Hadoop分布式文件系统)、Kafka、Hbase、ES(Elasticsearch)等,而在分发的过程中,由于不同存储终端的数据落地时效性要求可能不同,例如,HDFS的数据写入是按天进行任务的计算和应用,Kafka的数据写入一般是按秒进行任务的计算和应用,通常用于诸如实时推荐、实时计算等场景中。针对数据不同场景的分发要求,数据分发层4可以根据存储终端进行服务分组管理。例如,线上会划分为Kafka Collector组、HDFS Collector组等。不同Collector组会从数据缓冲层3获取相应标签(topic)的数据并分发至下游。
所述数据存储层5,用于存储数据,可以由不同形式的数据库构成,所述数据库可以ES、Hive、Kafka、Hadoop和Hbase等。
所述监控模块6,用于监控整条传输链路中所体现的数据质量,以为所述流式数据传输系统对外传输质量提供监控告警。如何衡量数据的传输质量是衡量所述流式数据传输系统的重要指标之一,例如,所述流式数据传输系统数据丢失率、延迟率、接收数据量、分发数据量等。
为了帮助理解所述数据传输系统的工作原理,下面对其提供的数据传输服务进行介绍:数据源1可以是每条记录为单位形成一条一条的数据,也可以以logId为单位形成一批一批的数据(即,每批数据分别标识有一个logId),通过HTTP、RPC等协议将这些数据上报给网关路由层2,并依次经过网关路由层2、数据缓冲层3进入到数据分发层4,通过数据分发层4将这些数据发到数据存储层5中的存储终端中。
图2示意性示出了根据本申请实施例一的基于Kafka集群的分区优化方法的流程图。下面以计算机设备20为执行主体进行示例性描述。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。如图2所示,该基于Kafka集群的分区优化方法可以包括步骤S20~步骤S24,其中:
步骤S20,获取各个节点服务器的运行指标数据,所述运作指标数据包括所述节点服务器运行时的CPU信息、内存信息以及磁盘IO信息。
具体地,Kafka集群包括一个或多个节点服务器,每一个节点服务器称为一个broker,每一个broker下可以分布一个或者多个Topic partition。其中,每条发布到kafka集群的消息都有一个主题,这个主题就叫做Topic。每个Topic下具有一个或者多个partition(分区),需要说明的是,Partition是一个物理上的概念。
每一个broker具有多个磁盘用于存储数据,每一个磁盘中可能分布有一个或者多个partition(分区)。
在本实施例中,可以在Kafka集群中的每一个节点服务器部署Agent,通过部署的Agent采集各个节点服务器运行时的CPU信息、内存信息以及磁盘IO信息,并将采集到的CPU信息、内存信息以及磁盘IO信息上报给计算机设备20。
其中,Agent为一个用于采集数据的独立进程。
其中,所述CPU信息可以包括节点服务器的CPU的使用率。所述内存信息可以包括节点服务器下的各个磁盘的大小,以及各个磁盘当前使用的存储空间的大小。所述磁盘IO信息包括节点服务器中的所有磁盘的IO使用率。
步骤S21,获取各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息。
具体地,计算机设备20可以从Kafka集群中的Kafka Broker Controller中获取各个节点服务器中包含的磁盘与分区的对应关系,每一个磁盘中包含有至少一个分区。
在本实施例中,计算机设备20可以通过遍历所有节点服务器的方式来获取每一个节点服务器中包含的分区的IO信息,其中,所述分区的IO信息包括分区的IO使用率。
需要说明的是,在Kafka集群中,所有的Kafka Broker节点会一起去Zookeeper上注册一个临时节点,但只有一个Kafka Broker会注册成功,其他的都会失败,这个成功在Zookeeper上注册临时节点的Kafka Broker即为Kafka Broker Controller。
步骤S22,根据获取到的所述运行指标数据、所述对应关系以及所述分区的IO信息构建所述Kafka集群的负载模型。
具体地,所述负载模型为Kafka集群在各个维度的指标数据,其中,维度可以包括CPU维度,磁盘维度,分区维度等。
在一示例性的实施方式中,该负载模型可以包括Kafka集群包含的各个磁盘的IO信息,每一个磁盘中包含的分区的IO信息和分区流量信息,以及各个磁盘的内存信息。其中,分区流量信息为该分区的流量大小,比如,该分区的流量大小为20M。各个磁盘的内存信息包括各个磁盘的大小信息,以及各个磁盘当前使用的存储空间的大小,比如磁盘A大小为100M,当前使用的存储空间为30M;磁盘B的大小为200M,当前使用的存储空间为50M。
在一实施方式中,在构建所述负载模型时,还可以根据每一个磁盘包含的分区数量,以及每一个分区的IO使用率来建立各个分区的IO使用率排行榜,这样,计算机设备20就可以通过该排行榜来迅速找到最大IO使用率的分区,以及最小IO使用率的分区。
在另一实施方式中,在在构建所述负载模型时,还可以根据每一个磁盘的IO使用率来建立磁盘使用率排行榜,这样,就可以通过该排行榜来迅速发现热门磁盘和冷门磁盘。
步骤S23,根据所述负载模型与预设的优化目标生成对应的优化任务。
具体地,所述优化目标为预先设定的需要将Kafka集群中的分区如何在磁盘上进行分布的规划。所述优化任务为对Kafka集群中的分区具体如何进行迁移或扩容的描述。
在一示例性的实施方式中,所述优化目标可以包括所述Kafka集群包含的所有磁盘的IO使用率的平均值与所有磁盘中IO使用率的最大值的差值比例,比如,该优化目标为Kafka集群包含的所有磁盘的IO使用率的平均值与所有磁盘中IO使用率的最大值的差值比例为20%,则该优化目标代表:若当前磁盘A的IO使用率为T1与所有磁盘的IO使用率的平均TV的差值比例大于或者等于20%,则需要对该磁盘A进行优化,即若(T1-TV)/TV的值大于或者等于20%,才需要对aging磁盘A进行优化,在本实施例中,参照图3,所述根据所述负载模型与预设的优化目标生成对应的优化任务包括:
步骤S30,根据所述Kafka集群包含的各个磁盘的IO信息计算所有磁盘的IO使用率的平均值。
步骤S31,根据所述差值比例、所述Kafka集群包含各个磁盘的IO信息以及所述平均值确定待优化的磁盘。
具体地,由于各个磁盘的IO信息包括有该磁盘的IO使用率,因此,在得到所有磁盘的IO使用率后,即可以计算出所有磁盘的IO使用率的求平均值TV,以得到平均值TV后,可以依次根据各个磁盘的IO使用率T以及该平均值TV来计算各个磁盘的IO使用率T以及该平均值TV的差值比例Y,即Y=(T-TV)/TV,在计算出各个磁盘的IO使用率T以及该平均值TV的差值比例Y之后,将该差值比例Y与优化目标中的差值比例(比如20%)进行比较,若当前待判定的磁盘的差值比例Y大于或者等于20%,则可以将当前待判定的磁盘作为待优化的磁盘;若当前待判定的磁盘的差值比例Y小于20%,则无需对将当前待判定的磁盘进行优化,即该当前待判定的磁盘不是待优化的磁盘。
步骤S32,获取所述待优化的磁盘中包含的各个分区的IO信息,并将IO使用率最大的分区作为所述优化任务中的待迁移分区。
具体地,由于每一个磁盘中一般都会包含有多个分区,而分区的IO使用率过高会导致整个磁盘的IO使用率过高,因此,为了避免磁盘的IO使用率过高,可以将该磁盘中的IO使用率最大的分区作为优化任务中的待迁移分区,其中,所述待迁移分区指的是需要将该分区迁移至其他磁盘的分区。
步骤S33,获取所述待优化的磁盘对应的节点服务器下的其他磁盘的IO信息,并根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘。
具体地,由于在同一个节点服务器下不同磁盘之间进行数据的迁移操作,其速度较快,因此,本实施例中,为了提高分区的迁移速度,可以先获取在待优化的磁盘对应的节点服务器下的其他磁盘的IO信息,以从中找出符合接收该待迁移分区的磁盘,并将找到的磁盘作为所述目标迁移磁盘。
在一示例性的实施例中,可以选择IO使用率最低的磁盘作为所述待迁移分区的目标迁移磁盘。在另一实施方式中,也可以选择IO使用率次低的磁盘作为所述待迁移分区的目标迁移磁盘,在本实施例中不作限定。
在一示例性的实施方式中,参阅图4,所述根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘之后,还包括:
步骤S40,判断所述目标迁移磁盘是否符合预设条件。
步骤S41,若不符合预设条件,则选择其他节点服务器下的磁盘中IO使用率最低的磁盘作为所述待迁移分区的迁移磁盘,其中,所述其他节点服务器为所述Kafka集群中除所述待优化的磁盘对应的节点服务器之外的节点服务器。
具体地,所述预设条件为预先设定的磁盘的IO使用率上限值,比如,该预设条件为70%。
由于当选择该目标迁移磁盘作为接收待迁移分区的磁盘后,若执行迁移操作,则该目标迁移磁盘的IO使用率将会增加,此时,若该目标迁移磁盘的IO使用率当前的值会大于该IO使用率上限值(比如70%),则表明该目标迁移磁盘实际上不适合作为迁移磁盘,此时,可以选择其他节点服务器下的磁盘中IO使用率最低的磁盘作为所述待迁移分区的迁移磁盘。
在一示例性的实施方式中,所述优化目标还可以包括第一磁盘容量占比,比如,该该第一磁盘容量占比为75%,则该优化目标代表:若当前磁盘的磁盘容量占比大于或等于75%,则需要对当前磁盘进行优化。
需要说明的是,本实施例中的磁盘容量指的是磁盘当前使用的存储空间的大小与该磁盘的大小的比值,比如,若磁盘当前使用的存储空间为100M,而该磁盘的大小为200M,则表示该磁盘的磁盘容量占比为:100/200=50%。
在一实施例中,参照图5,所述根据所述负载模型与预设的优化目标生成对应的优化任务还包括:
步骤S50,获取所述Kafka集群包含的各个磁盘的内存信息,并根据获取到的内存信息确定各个磁盘的第二磁盘容量占比;
步骤S51,根据所述第一磁盘容量占比与所述第二磁盘容量占比确定待优化的磁盘;
步骤S52,获取所述待优化的磁盘中包含的各个分区的流量信息,并将流量最大的分区作为所述优化任务中的待扩容分区。
具体地,在得到各个磁盘的内存信息之后,可以根据该内存信息中包含的磁盘的大小信息以及磁盘当前使用的存储空间信息来确定该磁盘的第二磁盘容量占比,比如,获取到某个磁盘的磁盘大小为200M以及该磁盘被使用的存储空间为180M,则可以计算出该磁盘的第二磁盘容量占比=180M/200M=90%,由于该第二磁盘容量占比(90%)大于第一磁盘容量占比(75%),则可以确定该磁盘为待优化的磁盘。在本实施例中,对于其他磁盘,也可以采用上述方法进行判定其他磁盘是否为待优化的磁盘。
在本实施例中,由于磁盘中一般分布有至少一个分区,而当其中的某一个分区的流量大小特别大时,则表明存储到该分区的数据比较多,因此,为了避免该分区占满该磁盘,可以对该分区进行扩容,即可以将该流量最大的分区作为待扩容分区,这样,就可以通过扩容的方式来增加分区对存储至该分区的数据进出分流。
步骤S24,将所述优化任务发送至所述Kafka集群,以使所述Kafka集群根据所述优化任务执行分区优化操作,其中,所述分区优化操作包含分区迁移操作和分区扩容操作中的至少一种。
具体地,当计算机设备生成了优化任务之后,即可以将该优化任务发给Kafka集群,这样,Kafka集群即可以根据该优化任务来进行分区优化操作,比如,若该优化任务为将分区A迁移到磁盘B中,则在接收到该优化任务后,Kafka集群即可以采用分区迁移模块将分区A迁移到磁盘B中。若该优化任务为分区扩容任务,则该Kafka集群即可以进行分区动态扩容操作,比如,新增分区partition A,其中,该新增的分区partition A应该是与待扩容分区属于同一个Topic。
通过获取各个节点服务器的运行指标数据以及各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息,进而根据获取到的数据来构建Kafka集群的负载模型,以根据所述负载模型与预设的优化目标生成对应的优化任务,并将该优化任务发送给Kafka集群,从而使得Kafka集群可以根据该优化任务对磁盘上的分区进行迁移操作或者扩容操作,这样磁盘上分布的分区的IO使用率将不会过高,进而将减少Kafka集群在传输数据时发生数据丢失的情况。
在一示例性的实施方式中,所述基于Kafka集群的分区优化方法还包括:
将IO使用率大于预设值的分区推送至与所述Kafka集群连接的Zookeeper,以使所述Zookeeper通过网关将所述将IO使用率大于预设值的分区剔除。
具体地,所述预设值为预先设定的值,比如95%。在本实施例中,由于IO使用率大于预设值的分区若继续向该分区进出数据读写操作,一般会发生异常,因此,计算机设备20在得到IO使用率大于预设值的分区后,为了避免网关仍然可能会向其写入数据,本实施例可以将该IO使用率大于预设值的分区推送至与所述Kafka集群连接的Zookeeper,这样,Zookeeper可以通知网关将所述将IO使用率大于预设值的分区剔除,从而让网关不再向这些分区写入数据,进而可以避免数据发生丢失。
图6示出了根据本申请实施例的基于Kafka集群的分区优化装置600一实施例的程序模块图。在本实施例中,基于Kafka集群的分区优化装置600包括一系列的存储于存储器上的计算机程序指令,当该计算机程序指令被处理器执行时,可以实现本发明各实施例的播放器测试方法功能。在一些实施例中,基于该计算机程序指令各部分所实现的特定的操作,基于Kafka集群的分区优化装置600可以被划分为一个或多个模块。例如,在图6中,所述基于Kafka集群的分区优化装置600可以被分割成第一获取模块601、第二获取模块602、构建模块603、生成模块604及发送模块605。其中:
第一获取模块601,用于获取各个节点服务器的运行指标数据,所述运作指标数据包括所述节点服务器运行时的CPU信息、内存信息以及磁盘IO信息。
具体地,Kafka集群包括一个或多个节点服务器,每一个节点服务器称为一个broker,每一个broker下可以分布一个或者多个Topic partition。其中,每条发布到kafka集群的消息都有一个主题,这个主题就叫做Topic。每个Topic下具有一个或者多个partition(分区),需要说明的是,Partition是一个物理上的概念。
每一个broker具有多个磁盘用于存储数据,每一个磁盘中可能分布有一个或者多个partition(分区)。
在本实施例中,可以在Kafka集群中的每一个节点服务器部署Agent,通过部署的Agent采集各个节点服务器运行时的CPU信息、内存信息以及磁盘IO信息,并将采集到的CPU信息、内存信息以及磁盘IO信息上报给第一获取模块601。
其中,Agent为一个用于采集数据的独立进程。
其中,所述CPU信息可以包括节点服务器的CPU的使用率。所述内存信息可以包括节点服务器下的各个磁盘的大小,以及各个磁盘当前使用的存储空间的大小。所述磁盘IO信息包括节点服务器中的所有磁盘的IO使用率。
第二获取模块602,用于获取各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息。
具体地,第二获取模块602可以从Kafka集群中的Kafka Broker Controller中获取各个节点服务器中包含的磁盘与分区的对应关系,每一个磁盘中包含有至少一个分区。
在本实施例中,第二获取模块602可以通过遍历所有节点服务器的方式来获取每一个节点服务器中包含的分区的IO信息,其中,所述分区的IO信息包括分区的IO使用率。
需要说明的是,在Kafka集群中,所有的Kafka Broker节点会一起去Zookeeper上注册一个临时节点,但只有一个Kafka Broker会注册成功,其他的都会失败,这个成功在Zookeeper上注册临时节点的Kafka Broker即为Kafka Broker Controller。
构建模块603,用于根据获取到的所述运行指标数据、所述对应关系以及所述分区的IO信息构建所述Kafka集群的负载模型。
具体地,所述负载模型为Kafka集群在各个维度的指标数据,其中,维度可以包括CPU维度,磁盘维度,分区维度等。
在一示例性的实施方式中,该负载模型可以包括Kafka集群包含的各个磁盘的IO信息,每一个磁盘中包含的分区的IO信息和分区流量信息,以及各个磁盘的内存信息。其中,分区流量信息为该分区的流量大小,比如,该分区的流量大小为20M。各个磁盘的内存信息包括各个磁盘的大小信息,以及各个磁盘当前使用的存储空间的大小,比如磁盘A大小为100M,当前使用的存储空间为30M;磁盘B的大小为200M,当前使用的存储空间为50M。
在一实施方式中,在构建所述负载模型时,还可以根据每一个磁盘包含的分区数量,以及每一个分区的IO使用率来建立各个分区的IO使用率排行榜,这样,计算机设备20就可以通过该排行榜来迅速找到最大IO使用率的分区,以及最小IO使用率的分区。
在另一实施方式中,在在构建所述负载模型时,还可以根据每一个磁盘的IO使用率来建立磁盘使用率排行榜,这样,就可以通过该排行榜来迅速发现热门磁盘和冷门磁盘。
生成模块604,用于根据所述负载模型与预设的优化目标生成对应的优化任务。
具体地,所述优化目标为预先设定的需要将Kafka集群中的分区如何在磁盘上进行分布的规划。所述优化任务为对Kafka集群中的分区具体如何进行迁移或扩容的描述。
在一示例性的实施方式中,所述优化目标可以包括所述Kafka集群包含的所有磁盘的IO使用率的平均值与所有磁盘中IO使用率的最大值的差值比例,比如,该优化目标为Kafka集群包含的所有磁盘的IO使用率的平均值与所有磁盘中IO使用率的最大值的差值比例为20%,则该优化目标代表:若当前磁盘A的IO使用率为T1与所有磁盘的IO使用率的平均TV的差值比例大于或者等于20%,则需要对该磁盘A进行优化,即若(T1-TV)/TV的值大于或者等于20%,才需要对aging磁盘A进行优化,在本实施例中,生成模块604,还用于根据所述Kafka集群包含的各个磁盘的IO信息计算所有磁盘的IO使用率的平均值。
生成模块604,还用于根据所述差值比例、所述Kafka集群包含各个磁盘的IO信息以及所述平均值确定待优化的磁盘。
具体地,由于各个磁盘的IO信息包括有该磁盘的IO使用率,因此,在得到所有磁盘的IO使用率后,即可以计算出所有磁盘的IO使用率的求平均值TV,以得到平均值TV后,可以依次根据各个磁盘的IO使用率T以及该平均值TV来计算各个磁盘的IO使用率T以及该平均值TV的差值比例Y,即Y=(T-TV)/TV,在计算出各个磁盘的IO使用率T以及该平均值TV的差值比例Y之后,将该差值比例Y与优化目标中的差值比例(比如20%)进行比较,若当前待判定的磁盘的差值比例Y大于或者等于20%,则可以将当前待判定的磁盘作为待优化的磁盘;若当前待判定的磁盘的差值比例Y小于20%,则无需对将当前待判定的磁盘进行优化,即该当前待判定的磁盘不是待优化的磁盘。
生成模块604,还用于获取所述待优化的磁盘中包含的各个分区的IO信息,并将IO使用率最大的分区作为所述优化任务中的待迁移分区。
具体地,由于每一个磁盘中一般都会包含有多个分区,而分区的IO使用率过高会导致整个磁盘的IO使用率过高,因此,为了避免磁盘的IO使用率过高,可以将该磁盘中的IO使用率最大的分区作为优化任务中的待迁移分区,其中,所述待迁移分区指的是需要将该分区迁移至其他磁盘的分区。
生成模块604,还用于获取所述待优化的磁盘对应的节点服务器下的其他磁盘的IO信息,并根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘。
具体地,由于在同一个节点服务器下不同磁盘之间进行数据的迁移操作,其速度较快,因此,本实施例中,为了提高分区的迁移速度,可以先获取在待优化的磁盘对应的节点服务器下的其他磁盘的IO信息,以从中找出符合接收该待迁移分区的磁盘,并将找到的磁盘作为所述目标迁移磁盘。
在一示例性的实施例中,可以选择IO使用率最低的磁盘作为所述待迁移分区的目标迁移磁盘。在另一实施方式中,也可以选择IO使用率次低的磁盘作为所述待迁移分区的目标迁移磁盘,在本实施例中不作限定。
在一示例性的实施方式中,所述基于Kafka集群的分区优化装置600还包括判断模块和选择模块。
判断模块。用于断所述目标迁移磁盘是否符合预设条件。
选择模块,用于若不符合预设条件,则选择其他节点服务器下的磁盘中IO使用率最低的磁盘作为所述待迁移分区的迁移磁盘,其中,所述其他节点服务器为所述Kafka集群中除所述待优化的磁盘对应的节点服务器之外的节点服务器。
具体地,所述预设条件为预先设定的磁盘的IO使用率上限值,比如,该预设条件为70%。
由于当选择该目标迁移磁盘作为接收待迁移分区的磁盘后,若执行迁移操作,则该目标迁移磁盘的IO使用率将会增加,此时,若该目标迁移磁盘的IO使用率当前的值会大于该IO使用率上限值(比如70%),则表明该目标迁移磁盘实际上不适合作为迁移磁盘,此时,可以选择其他节点服务器下的磁盘中IO使用率最低的磁盘作为所述待迁移分区的迁移磁盘。
在一示例性的实施方式中,所述优化目标还可以包括第一磁盘容量占比,比如,该该第一磁盘容量占比为75%,则该优化目标代表:若当前磁盘的磁盘容量占比大于或等于75%,则需要对当前磁盘进行优化。
需要说明的是,本实施例中的磁盘容量指的是磁盘当前使用的存储空间的大小与该磁盘的大小的比值,比如,若磁盘当前使用的存储空间为100M,而该磁盘的大小为200M,则表示该磁盘的磁盘容量占比为:100/200=50%。
在一实施例中,所述生成模块604,还用于获取所述Kafka集群包含的各个磁盘的内存信息,并根据获取到的内存信息确定各个磁盘的第二磁盘容量占比;根据所述第一磁盘容量占比与所述第二磁盘容量占比确定待优化的磁盘;获取所述待优化的磁盘中包含的各个分区的流量信息,并将流量最大的分区作为所述优化任务中的待扩容分区。
具体地,在得到各个磁盘的内存信息之后,可以根据该内存信息中包含的磁盘的大小信息以及磁盘当前使用的存储空间信息来确定该磁盘的第二磁盘容量占比,比如,获取到某个磁盘的磁盘大小为200M以及该磁盘被使用的存储空间为180M,则可以计算出该磁盘的第二磁盘容量占比=180M/200M=90%,由于该第二磁盘容量占比(90%)大于第一磁盘容量占比(75%),则可以确定该磁盘为待优化的磁盘。在本实施例中,对于其他磁盘,也可以采用上述方法进行判定其他磁盘是否为待优化的磁盘。
在本实施例中,由于磁盘中一般分布有至少一个分区,而当其中的某一个分区的流量大小特别大时,则表明存储到该分区的数据比较多,因此,为了避免该分区占满该磁盘,可以对该分区进行扩容,即可以将该流量最大的分区作为待扩容分区,这样,就可以通过扩容的方式来增加分区对存储至该分区的数据进出分流。
发送模块605,用于将所述优化任务发送至所述Kafka集群,以使所述Kafka集群根据所述优化任务执行分区优化操作,其中,所述分区优化操作包含分区迁移操作和分区扩容操作中的至少一种。
具体地,当计算机设备生成了优化任务之后,即可以将该优化任务发给Kafka集群,这样,Kafka集群即可以根据该优化任务来进行分区优化操作,比如,若该优化任务为将分区A迁移到磁盘B中,则在接收到该优化任务后,Kafka集群即可以采用分区迁移模块将分区A迁移到磁盘B中。若该优化任务为分区扩容任务,则该Kafka集群即可以进行分区动态扩容操作,比如,新增分区partition A,其中,该新增的分区partition A应该是与待扩容分区属于同一个Topic。
通过获取各个节点服务器的运行指标数据以及各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息,进而根据获取到的数据来构建Kafka集群的负载模型,以根据所述负载模型与预设的优化目标生成对应的优化任务,并将该优化任务发送给Kafka集群,从而使得Kafka集群可以根据该优化任务对磁盘上的分区进行迁移操作或者扩容操作,这样磁盘上分布的分区的IO使用率将不会过高,进而将减少Kafka集群在传输数据时发生数据丢失的情况。
在一示例性的实施方式中,基于Kafka集群的分区优化装置还包括推送模块。
所述推送模块,用于将IO使用率大于预设值的分区推送至与所述Kafka集群连接的Zookeeper,以使所述Zookeeper通过网关将所述将IO使用率大于预设值的分区剔除。
具体地,所述预设值为预先设定的值,比如95%。在本实施例中,由于IO使用率大于预设值的分区若继续向该分区进出数据读写操作,一般会发生异常,因此,所述推送模块在得到IO使用率大于预设值的分区后,为了避免网关仍然可能会向其写入数据,本实施例可以将该IO使用率大于预设值的分区推送至与所述Kafka集群连接的Zookeeper,这样,Zookeeper可以通知网关将所述将IO使用率大于预设值的分区剔除,从而让网关不再向这些分区写入数据,进而可以避免数据发生丢失。
图7示意性示出了根据本申请实施例的适于实现基于Kafka集群的分区优化方法的计算机设备的硬件架构示意图。本实施例中,计算机设备20是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是网关等数据转发设备。如图7所示,计算机设备20至少包括但不限于:可通过系统总线相互通信连接存储器21、处理器22、网络接口23。其中:
存储器21至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备20的内部存储模块,例如该计算机设备20的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(FlashCard)等。当然,存储器21还可以既包括计算机设备20的内部存储模块也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如基于Kafka集群的分区优化方法的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作,例如执行与计算机设备20进行数据交互或者通信相关的控制和处理等。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据。
网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在计算机设备20与其他计算机设备之间建立通信连接。例如,网络接口23用于通过网络将计算机设备20与外部终端相连,在计算机设备20与外部终端之间的建立基于Kafka集群的分区优化通道和通信连接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(WidebandCode Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图7仅示出了具有部件21-23的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器21中的基于Kafka集群的分区优化方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的基于Kafka集群的分区优化方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的基于Kafka集群的分区优化方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于Kafka集群的分区优化方法,其特征在于,所述方法包括:
获取各个节点服务器的运行指标数据,所述运作指标数据包括所述节点服务器运行时的CPU信息、内存信息以及磁盘IO信息;
获取各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息;
根据获取到的所述运行指标数据、所述对应关系以及所述分区的IO信息构建所述Kafka集群的负载模型;
根据所述负载模型与预设的优化目标生成对应的优化任务;
将所述优化任务发送至所述Kafka集群,以使所述Kafka集群根据所述优化任务执行分区优化操作,其中,所述分区优化操作包含分区迁移操作和分区扩容操作中的至少一种。
2.根据权利要求1所述的基于Kafka集群的分区优化方法,其特征在于,所述负载模型包括Kafka集群包含的各个磁盘的IO信息,每一个磁盘中包含的分区的IO信息和分区流量信息,以及各个磁盘的内存信息。
3.根据权利要求2所述的基于Kafka集群的分区优化方法,其特征在于,所述优化目标包括所述Kafka集群包含的所有磁盘的IO使用率的平均值与所有磁盘中IO使用率的最大值的差值比例,所述根据所述负载模型与预设的优化目标生成对应的优化任务包括:
根据所述Kafka集群包含的各个磁盘的IO信息计算所有磁盘的IO使用率的平均值;
根据所述差值比例、所述Kafka集群包含各个磁盘的IO信息以及所述平均值确定待优化的磁盘;
获取所述待优化的磁盘中包含的各个分区的IO信息,并将IO使用率最大的分区作为所述优化任务中的待迁移分区;
获取所述待优化的磁盘对应的节点服务器下的其他磁盘的IO信息,并根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘。
4.根据权利要求3所述的基于Kafka集群的分区优化方法,其特征在于,根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘包括:
根据其他磁盘的IO信息选取IO使用率最低的磁盘作为所述待迁移分区的目标迁移磁盘。
5.根据权利要求4所述的基于Kafka集群的分区优化方法,其特征在于,根据其他磁盘的IO信息确定所述待迁移分区的目标迁移磁盘之后,还包括:
判断所述目标迁移磁盘是否符合预设条件;
若不符合预设条件,则选择其他节点服务器下的磁盘中IO使用率最低的磁盘作为所述待迁移分区的迁移磁盘,其中,所述其他节点服务器为所述Kafka集群中除所述待优化的磁盘对应的节点服务器之外的节点服务器。
6.根据权利要求2所述的基于Kafka集群的分区优化方法,其特征在于,所述优化目标包括第一磁盘容量占比,所述根据所述负载模型与预设的优化目标生成对应的优化任务包括:
获取所述Kafka集群包含的各个磁盘的内存信息,并根据获取到的内存信息确定各个磁盘的第二磁盘容量占比;
根据所述第一磁盘容量占比与所述第二磁盘容量占比确定待优化的磁盘;
获取所述待优化的磁盘中包含的各个分区的流量信息,并将流量最大的分区作为所述优化任务中的待扩容分区。
7.根据权利要求1至6任一项所述的基于Kafka集群的分区优化方法,其特征在于,所述方法还包括:
将IO使用率大于预设值的分区推送至与所述Kafka集群连接的Zookeeper,以使所述Zookeeper通过网关将所述将IO使用率大于预设值的分区剔除。
8.一种基于Kafka集群的分区优化装置,其特征在于,所述装置包括:
第一获取模块,用于获取各个节点服务器的运行指标数据,所述运作指标数据包括所述节点服务器运行时的CPU信息、内存信息以及磁盘IO信息;
第二获取模块,用于获取各个节点服务器中包含的磁盘与分区的对应关系,以及获取各个节点服务器中包含的分区的IO信息;
构建模块,用于根据获取到的所述运行指标数据、所述对应关系以及所述分区的IO信息构建所述Kafka集群的负载模型;
生成模块,用于根据所述负载模型与预设的优化目标生成对应的优化任务;
发送模块,用于将所述优化任务发送至所述Kafka集群,以使所述Kafka集群根据所述优化任务执行分区优化操作,其中,所述分区优化操作包含分区迁移操作和分区扩容操作中的至少一种。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至7任一项所述基于Kafka集群的分区优化方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现权利要求1至7任一项所述基于Kafka集群的分区优化方法的步骤。
CN202010812659.2A 2020-08-13 2020-08-13 基于Kafka集群的分区优化方法和系统 Active CN111966289B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010812659.2A CN111966289B (zh) 2020-08-13 2020-08-13 基于Kafka集群的分区优化方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010812659.2A CN111966289B (zh) 2020-08-13 2020-08-13 基于Kafka集群的分区优化方法和系统

Publications (2)

Publication Number Publication Date
CN111966289A true CN111966289A (zh) 2020-11-20
CN111966289B CN111966289B (zh) 2024-02-09

Family

ID=73364417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010812659.2A Active CN111966289B (zh) 2020-08-13 2020-08-13 基于Kafka集群的分区优化方法和系统

Country Status (1)

Country Link
CN (1) CN111966289B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112560939A (zh) * 2020-12-11 2021-03-26 上海哔哩哔哩科技有限公司 模型验证方法、装置及计算机设备
CN112764679A (zh) * 2021-01-19 2021-05-07 福建天泉教育科技有限公司 一种动态扩容的方法及终端
CN114051000A (zh) * 2021-11-17 2022-02-15 中国工商银行股份有限公司 基于时间序列模型的业务流量切流方法及装置
CN114168405A (zh) * 2021-11-17 2022-03-11 深圳市梦网科技发展有限公司 一种数据监控方法、装置、终端设备及存储介质
CN114598705A (zh) * 2022-03-07 2022-06-07 北京百度网讯科技有限公司 消息负载均衡方法、装置、设备和介质
CN114640680A (zh) * 2020-11-30 2022-06-17 南宁富联富桂精密工业有限公司 负载均衡方法、装置及计算机可读存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013047339A1 (ja) * 2011-09-26 2013-04-04 日本電気株式会社 負荷分散装置、方法及びプログラム
US20180091588A1 (en) * 2016-09-26 2018-03-29 Linkedin Corporation Balancing workload across nodes in a message brokering cluster
US20180314566A1 (en) * 2015-09-21 2018-11-01 Capital One Services, Llc Systems for parallel processing of datasets with dynamic skew compensation
CN109634524A (zh) * 2018-12-10 2019-04-16 浪潮(北京)电子信息产业有限公司 一种数据处理守护进程的数据分区配置方法、装置及设备
CN109885580A (zh) * 2019-02-14 2019-06-14 深圳市盟天科技有限公司 一种热点账户批量更新方法、装置、服务器和存储介质
US10375164B1 (en) * 2013-12-30 2019-08-06 Emc Corporation Parallel storage system with burst buffer appliance for storage of partitioned key-value store across a plurality of storage tiers
CN110633151A (zh) * 2019-09-20 2019-12-31 北京小米移动软件有限公司 分布式发布消息集群分区平衡的方法、装置及存储介质
CN110704542A (zh) * 2019-10-15 2020-01-17 南京莱斯网信技术研究院有限公司 一种基于节点负载的数据动态分区系统
CN110990154A (zh) * 2019-11-28 2020-04-10 曙光信息产业股份有限公司 一种大数据应用优化方法、装置及存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013047339A1 (ja) * 2011-09-26 2013-04-04 日本電気株式会社 負荷分散装置、方法及びプログラム
US10375164B1 (en) * 2013-12-30 2019-08-06 Emc Corporation Parallel storage system with burst buffer appliance for storage of partitioned key-value store across a plurality of storage tiers
US20180314566A1 (en) * 2015-09-21 2018-11-01 Capital One Services, Llc Systems for parallel processing of datasets with dynamic skew compensation
US20180091588A1 (en) * 2016-09-26 2018-03-29 Linkedin Corporation Balancing workload across nodes in a message brokering cluster
CN109634524A (zh) * 2018-12-10 2019-04-16 浪潮(北京)电子信息产业有限公司 一种数据处理守护进程的数据分区配置方法、装置及设备
CN109885580A (zh) * 2019-02-14 2019-06-14 深圳市盟天科技有限公司 一种热点账户批量更新方法、装置、服务器和存储介质
CN110633151A (zh) * 2019-09-20 2019-12-31 北京小米移动软件有限公司 分布式发布消息集群分区平衡的方法、装置及存储介质
CN110704542A (zh) * 2019-10-15 2020-01-17 南京莱斯网信技术研究院有限公司 一种基于节点负载的数据动态分区系统
CN110990154A (zh) * 2019-11-28 2020-04-10 曙光信息产业股份有限公司 一种大数据应用优化方法、装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李灿彬;甘宏;: "基于Docker容器的云平台设计与实现", 科技广场, no. 06 *
高子妍;王勇;: "面向云服务的分布式消息系统负载均衡策略", 计算机科学, no. 1 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114640680A (zh) * 2020-11-30 2022-06-17 南宁富联富桂精密工业有限公司 负载均衡方法、装置及计算机可读存储介质
CN114640680B (zh) * 2020-11-30 2024-04-05 南宁富联富桂精密工业有限公司 负载均衡方法、装置及计算机可读存储介质
CN112560939A (zh) * 2020-12-11 2021-03-26 上海哔哩哔哩科技有限公司 模型验证方法、装置及计算机设备
CN112560939B (zh) * 2020-12-11 2023-05-23 上海哔哩哔哩科技有限公司 模型验证方法、装置及计算机设备
CN112764679A (zh) * 2021-01-19 2021-05-07 福建天泉教育科技有限公司 一种动态扩容的方法及终端
CN114051000A (zh) * 2021-11-17 2022-02-15 中国工商银行股份有限公司 基于时间序列模型的业务流量切流方法及装置
CN114168405A (zh) * 2021-11-17 2022-03-11 深圳市梦网科技发展有限公司 一种数据监控方法、装置、终端设备及存储介质
CN114598705A (zh) * 2022-03-07 2022-06-07 北京百度网讯科技有限公司 消息负载均衡方法、装置、设备和介质
CN114598705B (zh) * 2022-03-07 2023-08-15 北京百度网讯科技有限公司 消息负载均衡方法、装置、设备和介质

Also Published As

Publication number Publication date
CN111966289B (zh) 2024-02-09

Similar Documents

Publication Publication Date Title
CN111966289B (zh) 基于Kafka集群的分区优化方法和系统
CN108776934B (zh) 分布式数据计算方法、装置、计算机设备及可读存储介质
CN111970195B (zh) 数据传输方法和流式数据传输系统
CN111181800B (zh) 测试数据处理方法、装置、电子设备及存储介质
CN112751772B (zh) 数据传输方法和系统
CN112019605B (zh) 数据流的数据分发方法和系统
CN108574645B (zh) 一种队列调度方法及装置
CN110147470B (zh) 一种跨机房数据比对系统及方法
CN111966943A (zh) 流式数据分发方法和系统
CN112367384B (zh) 基于Kafka集群的动态限速方法、装置以及计算机设备
CN112751726A (zh) 一种数据处理方法、装置、电子设备和存储介质
CN112269661B (zh) 基于Kafka集群的分区迁移方法和装置
CN113468226A (zh) 一种业务处理方法、装置、电子设备和存储介质
WO2021147319A1 (zh) 一种数据处理方法、装置、设备及介质
CN112751722B (zh) 数据传输质量监控方法和系统
CN112416568A (zh) 音视频转码任务的时长预估方法和时长预估装置
CN109308219B (zh) 任务处理方法、装置及分布式计算机系统
CN116226067A (zh) 日志管理方法、日志管理装置、处理器和日志平台
CN113448747B (zh) 数据传输方法、装置、计算机设备和存储介质
CN115292280A (zh) 一种跨区域的数据调度方法、装置、设备及存储介质
CN114035906A (zh) 虚拟机迁移方法、装置、电子设备及存储介质
CN109902067B (zh) 文件处理方法、装置、存储介质及计算机设备
CN114090201A (zh) 资源调度方法、装置、设备及存储介质
CN112019442B (zh) 基于有界一致性Hash算法的数据分发方法、系统、设备及介质
CN115065685B (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