CN116010094A - 一种kafka分区首选leader调优方法及装置 - Google Patents
一种kafka分区首选leader调优方法及装置 Download PDFInfo
- Publication number
- CN116010094A CN116010094A CN202211720096.XA CN202211720096A CN116010094A CN 116010094 A CN116010094 A CN 116010094A CN 202211720096 A CN202211720096 A CN 202211720096A CN 116010094 A CN116010094 A CN 116010094A
- Authority
- CN
- China
- Prior art keywords
- partition
- brooker
- value
- leader
- node
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种kafka分区首选leader调优方法及装置,属于kafka分区leader auto rebalance技术领域。该方法包括如下步骤:S1:根据broker对应的producer速率和consumer速率计算所有broker衡量值;S2:判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance;S3:在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,如果是则在分区副本排列后再对该分区执行PREFERRED选举,如果否则直接对该分区执行PREFERRED选举,将leader分配到目标broker上。本发明提供了智能化的集群均衡能力,确保kafka集群节点上的leader能保持在相对均衡的状态,在判断条件中引入各项服务指标,更好体现了负载情况,rebalance后负载也能很好的做到均衡。
Description
技术领域
本发明涉及kafka分区leader auto rebalance技术领域,具体而言,涉及一种kafka分区首选leader调优方法及装置。
背景技术
在现如今的大数据生态中,kafka做为较流行的MQ,集群智能的负载均衡对于集群的性能提升变得尤为重要。目前现存的auto leader balance难以精准做到balance ,leader rebalace评判标准只参考了leader分区的数量,判断条件比较单一,只依据leader数做判断,不切合节点实际情况,负载均衡效果不理想,且可能会出现均衡后节点负载过高,集群响应慢问题。
发明内容
为了解决上述问题,本申请实施例提供了一种kafka分区首选leader调优方法及装置。
第一方面,本申请实时例提供了一种kafka分区首选leader调优方法,包括如下步骤:
S1:根据broker对应的producer速率和consumer速率计算所有broker衡量值;
S2:判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance;
S3:在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,如果是则在分区副本排列后再对该分区执行PREFERRED选举,如果否则直接对该分区执行PREFERRED选举,将leader分配到目标broker上。
优选的,步骤S1中具体包括:
S11:获取broker对应的broker producer速率、broker consumer速率;
S12:将producer权重设置为0.5;
S13:根据式子h=0.5*R(p)+(1-0.5)R(c) 计算得到该broker的衡量值h,其中R(p)为broker producer速率,R(c)为broker consumer速率。
优选的,步骤S2中具体包括:
S21:在集群中设置一个容忍值t,将容忍值设置为0.1;
S22:根据式子avg(h1+h2...+hx)*(1+0.1)计算触发值;
S23:判断节点的衡量值是否大于或小于触发值,如果是则将该节点参与rebalance。
优选的,步骤S3中包括:
S31:获取衡量值和触发值之间的大小关系,根据节点的衡量值判断是否需要对分区副本进行排列,如果h> avg(h1+h2...+hx)*(1+0.1),则该分区排列为{"1":[1,2]},h>avg(h1+h2...+hx)*(1+0.1),则需要将该分区副本列表按衡量值重新升序排列后为{"1":[1,2]},之后再对该分区执行PREFERRED选举,如果h< avg(h1+h2...+hx)*(1+0.1),则直接对该分区执行PREFERRED选举;
S32:在成功选举后获取各个broker的压力值,对各个broker的压力值进行比较获取压力值小于预设压力的目标broker,将leader分配到目标broker上;
S33:在topic test中修改对应分区数据。
第二方面,本申请实施例提供了一种kafka分区首选leader调优装置,包括
衡量值计算模块,用以根据broker对应的producer速率和consumer速率计算所有broker衡量值;
触发判断模块,用以判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance;
选举执行模块,用以在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,如果是则在分区副本排列后再对该分区执行PREFERRED选举,如果否则直接对该分区执行PREFERRED选举,将leader分配到目标broker上。
优选的,所述衡量值计算模块包括
第一获取单元,用以获取broker对应的broker producer速率、broker consumer速率;
第一设置单元,用以将producer权重设置为0.5;
第一计算单元,用以根据式子h=0.5*R(p)+(1-0.5)R(c) 计算得到该broker的衡量值h,其中R(p)为broker producer速率,R(c)为broker consumer速率。
优选的,所述触发判断模块包括
第二设置单元,用以在集群中设置一个容忍值t,将容忍值设置为0.1;
第二计算单元,用以根据式子avg(h1+h2...+hx)*(1+0.1)计算触发值;
第一判断单元,用以判断节点的衡量值是否大于或小于触发值,如果是则将该节点参与rebalance。
优选的,所述选举执行模块包括
第二判断单元,用以获取衡量值和触发值之间的大小关系,根据节点的衡量值判断是否需要对分区副本进行排列,如果h> avg(h1+h2...+hx)*(1+0.1),则该分区排列为{"1":[1,2]},h> avg(h1+h2...+hx)*(1+0.1),则需要将该分区副本列表按衡量值重新升序排列后为{"1":[1,2]},之后再对该分区执行PREFERRED选举,如果h< avg(h1+h2...+hx)*(1+0.1),则直接对该分区执行PREFERRED选举;
分配单元,用以在成功选举后获取各个broker的压力值,对各个broker的压力值进行比较获取压力值小于预设压力的目标broker,将leader分配到目标broker上;
修改单元,用以在topic test中修改对应分区数据。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面或第一方面的任意一种可能的实现方式提供的方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第一方面的任意一种可能的实现方式提供的方法的步骤。
本发明的有益效果为:本发明提供了智能化的集群均衡能力,确保kafka集群节点上的leader能保持在相对均衡的状态,在判断条件中引入各项服务指标,更好体现了负载情况,rebalance后负载也能很好的做到均衡。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种kafka分区首选leader调优方法的流程示意图;
图2为本申请实施例提供的一种kafka分区首选leader调优装置的结构示意图;
图3为本申请实施例提供的一种电子设备的结构示意图;
图4为本申请实施例提供的一种kafka分区首选leader调优方法中的智能leaderrebalance优化流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本申请的多个实施例,不同实施例之间可以替换或者合并组合,因此本申请也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征A、B、C,另一个实施例包含特征B、D,那么本申请也应视为包括含有A、B、C、D的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。
下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本申请内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。
请参阅图1、4。图1是本申请实施例提供的一种kafka分区首选leader调优方法的流程示意图,图4为本申请实施例提供的一种kafka分区首选leader调优方法中的智能leader rebalance优化流程图。在本申请实施例中,方法包括如下步骤:
S1:根据broker对应的producer速率和consumer速率计算所有broker衡量值;
S2:判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance;
S3:在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,如果是则在分区副本排列后再对该分区执行PREFERRED选举,如果否则直接对该分区执行PREFERRED选举,将leader分配到目标broker上。
在本申请实施例中,本发明根据producer速率和consumer速率计算所有broker衡量值,判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance,提供了智能化的集群均衡能力,确保kafka集群节点上的leader能保持在相对均衡的状态,在判断条件中引入各项服务指标,更好体现了负载情况,rebalance后负载也能很好的做到均衡,在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,能够更加精准的从leader数量和节点请求负载情况做到leader rebalance,有效避免少数节点过载情况发生。
在一种可实施方式中,步骤S1中具体包括:
S11:获取broker对应的broker producer速率、broker consumer速率;
S12:将producer权重设置为0.5;
S13:根据式子h=0.5*R(p)+(1-0.5)R(c) 计算得到该broker的衡量值h,其中R(p)为broker producer速率,R(c)为broker consumer速率。
在本申请实施例中,通过均衡值计算法计算衡量值。
在一种可实施方式中,步骤S2中具体包括:
S21:在集群中设置一个容忍值t,将容忍值设置为0.1;
S22:根据式子avg(h1+h2...+hx)*(1+0.1)计算触发值;
S23:判断节点的衡量值是否大于或小于触发值,如果是则将该节点参与rebalance。
在本申请实施例中,对rebalance的触发条件进行判断。
在一种可实施方式中,步骤S3中包括:
S31:获取衡量值和触发值之间的大小关系,根据节点的衡量值判断是否需要对分区副本进行排列,如果h> avg(h1+h2...+hx)*(1+0.1),则该分区排列为{"1":[1,2]},h>avg(h1+h2...+hx)*(1+0.1),则需要将该分区副本列表按衡量值重新升序排列后为{"1":[1,2]},之后再对该分区执行PREFERRED选举,如果h< avg(h1+h2...+hx)*(1+0.1),则直接对该分区执行PREFERRED选举;
S32:在成功选举后获取各个broker的压力值,对各个broker的压力值进行比较获取压力值小于预设压力的目标broker,将leader分配到目标broker上;
S33:在topic test中修改对应分区数据。
在本申请实施例中,将leader分配到压力较小的目标broker上,实现触发后选举流程保护。
在本申请实施例中,现存rebalance技术描述:
1. 触发:如果imbalanceRatio=topicsNotInPreferredReplica.size.toDouble/ topicPartitionsForBroker.size 大于(leader.imbalance.per.broker.percentage)/100,则触发rebalance(执行PREFERRED选举);
2. 选举:以topic test为例,其分区1需要重选举leader,目前分区排列为{"1":[1,2]},选举就会按[1,2]顺序选择谁当leader,也就是1当选leader。
rebalance表示平衡,imbalanceRatio表示不平衡比。
现有的rebalance的技术描述
// broker 的AR副本数量
val totalTopicPartitionsForBroker = topicAndPartitionsForBroker.size
// 过滤出的leader不是AR副本集的preferred replica的数量
val totalTopicPartitionsNotLedByBroker = topicsNotInPreferredReplica.size
// 计算(过滤出的leader不是AR副本集的preferred replica的数量)/(broker的AR副本数量)
imbalanceRatio=totalTopicPartitionsNotLedByBroker.toDouble/totalTopicPartitionsForBroker
trace("leader imbalance ratio for broker %d is %f".format(leaderBroker, imbalanceRatio)) }
// 如果比例大于配置的leader.imbalance.per.broker.percentage参数,比如50%,就触发这个topic partitions的再平衡操作
if(imbalanceRatio > (config.leaderImbalancePerBrokerPercentage.toDouble / 100)) {
topicsNotInPreferredReplica.foreach {case(topicPartition, replicas) => {inLock(controllerContext.controllerLock) {
// 首先确保broker存活,而且没有分区正在重新分配或者没有进行preferredreplica 选举,且没有分区将被删除
if(controllerContext.liveBrokerIds.contains(leaderBroker)&&controllerContext.partitionsBeingReassigned.isEmpty&& controllerContext.partitionsUndergoingPreferredReplicaElection.isEmpty &&
!deleteTopicManager.isTopicQueuedUpForDeletion(topicPartition.topic)&&
controllerContext.allTopics.contains(topicPartition.topic)) {
// 然后真正触发Prederred Replica选举操作
onPreferredReplicaElection(Set(topicPartition), true)}
Convert.ToDouble是将一个String类型强制转换为Double型,在屏幕中输入的文字是字符,需要强制转化为double类型。
从上面描述可以看出,目前现存的kafka分区leader不够精准的balance,导致部分节点leader过载,请求积压导致整个集群响应过慢,leader rebalace判断条件比较单一,只依据leader数做判断,负载均衡效果不理想,且可能会出现均衡后节点负载过高,集群响应慢问题。
在本申请实施例中,本申请对首选leader优化:
1.增加触发:计算所有broker衡量值,以broker1为例,参考broker1 producer速率和consumer速率,并可自行设置producer权重(默认0.5),h1=0.5*R(p)+(1-0.5)R(c) 计算得到该broker的衡量值h1;集群可设定一个容忍值t(默认:0.1),只有h1 大于或小于avg(h1+h2...+hx)*(1+0.1)的节点才会参与rebalance
2. 选举流程:集群总共两个节点其均衡值为h1=100,h2=50,topicsNotInPreferredReplica中以topic test为例,其分区1需要重选举leader,分别以两种排列来阐述:
目前分区排列为{"1":[1,2]},h1> avg(h1+h2)*(1+0.1)这时分区副本列表按计算值h重新按升序排列后{"1":[2,1]},之后再对该分区执行PREFERRED选举;成功选举后,leader会被分配到压力较小的broker2上,之后修改zk数据/brokers/topics/test对应分区数据:{"version":1,"partitions":{"1":[2,1],"0":[1,3],"2":[3,2]}}
目前分区排列为{"1":[2,1]},h2 < avg(h1+h2)*(1+0.1)这时直接对该分区执行PREFERRED选举;成功选举后,leader会被分配到压力较小的broker2上。
本申请为实现负载均衡,需要开启broker jmx,每次rebalance时向broker请求相关指标数据用于均衡值计算,服务正常启动就可,用户无感知。
相比于现有技术,本申请主要优势在于:1、更加精准的负载均衡;2、进一步提升集群稳定;3、避免部分节点过载。和现有技术相比,本申请主要创造性在于:1、判断条件更加贴合机器情况;2、面向不通场景更加灵活的配置。可以对Kafka集群负载均衡,降低单节点负载过载,节约人力成本,提升集群稳定性。
下面将结合附图2,对本申请实施例提供的一种kafka分区首选leader调优装置进行详细介绍。需要说明的是,附图2所示的一种kafka分区首选leader调优装置,用于执行本申请图1所示实施例的方法,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请图1所示的实施例。
请参见图2,图2是本申请实施例提供的一种kafka分区首选leader调优装置的结构示意图。如图2所示,所述装置包括
衡量值计算模块201,用以根据broker对应的producer速率和consumer速率计算所有broker衡量值;
触发判断模块202,用以判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance;
选举执行模块203,用以在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,如果是则在分区副本排列后再对该分区执行PREFERRED选举,如果否则直接对该分区执行PREFERRED选举,将leader分配到目标broker上。
在一种可实施方式中,所述衡量值计算模块201包括
第一获取单元,用以获取broker对应的broker producer速率、broker consumer速率;
第一设置单元,用以将producer权重设置为0.5;
第一计算单元,用以根据式子h=0.5*R(p)+(1-0.5)R(c) 计算得到该broker的衡量值h,其中R(p)为broker producer速率,R(c)为broker consumer速率。
在一种可实施方式中,所述触发判断模块202包括
第二设置单元,用以在集群中设置一个容忍值t,将容忍值设置为0.1;
第二计算单元,用以根据式子avg(h1+h2...+hx)*(1+0.1)计算触发值;
第一判断单元,用以判断节点的衡量值是否大于或小于触发值,如果是则将该节点参与rebalance。
在一种可实施方式中,所述选举执行模块203包括
第二判断单元,用以获取衡量值和触发值之间的大小关系,根据节点的衡量值判断是否需要对分区副本进行排列,如果h> avg(h1+h2...+hx)*(1+0.1),则该分区排列为{"1":[1,2]},h> avg(h1+h2...+hx)*(1+0.1),则需要将该分区副本列表按衡量值重新升序排列后为{"1":[1,2]},之后再对该分区执行PREFERRED选举,如果h< avg(h1+h2...+hx)*(1+0.1),则直接对该分区执行PREFERRED选举;
分配单元,用以在成功选举后获取各个broker的压力值,对各个broker的压力值进行比较获取压力值小于预设压力的目标broker,将leader分配到目标broker上;
修改单元,用以在topic test中修改对应分区数据。
本领域的技术人员可以清楚地了解到本申请实施例的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”、“模块”、“部”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(Field-Programmable Gate Array,FPGA)、集成电路(Integrated Circuit,IC)等。
本申请实施例的各处理单元和/或模块,可通过实现本申请实施例所述的功能的模拟电路而实现,也可以通过执行本申请实施例所述的功能的软件而实现。
参见图3,其示出了本申请实施例所涉及的一种电子设备的结构示意图,该电子设备可以用于实施图1所示实施例中的方法。如图3所示,电子设备300可以包括:至少一个中央处理器301,至少一个网络接口304,用户接口303,存储器305,至少一个通信总线302。
其中,通信总线302用于实现这些组件之间的连接通信。
其中,用户接口303可以包括显示屏(Display)、摄像头(Camera),可选用户接口303还可以包括标准的有线接口、无线接口。
其中,网络接口304可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,中央处理器301可以包括一个或者多个处理核心。中央处理器301利用各种接口和线路连接整个电子设备300内的各个部分,通过运行或执行存储在存储器305内的指令、程序、代码集或指令集,以及调用存储在存储器305内的数据,执行终端300的各种功能和处理数据。可选的,中央处理器301可以采用数字信号处理(Digital SignalProcessing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。中央处理器301可集成中央中央处理器(Central Processing Unit,CPU)、图像中央处理器(GraphicsProcessing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到中央处理器301中,单独通过一块芯片进行实现。
其中,存储器305可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器305包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器305可用于存储指令、程序、代码、代码集或指令集。存储器305可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器305可选的还可以是至少一个位于远离前述中央处理器301的存储装置。如图3所示,作为一种计算机存储介质的存储器305中可以包括操作系统、网络通信模块、用户接口模块以及程序指令。
在图3所示的电子设备300中,用户接口303主要用于为用户提供输入的接口,获取用户输入的数据;而中央处理器301可以用于调用存储器305中存储的一种kafka分区首选leader调优应用程序,并具体执行以下操作:
S1:根据broker对应的producer速率和consumer速率计算所有broker衡量值;
S2:判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance;
S3:在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,如果是则在分区副本排列后再对该分区执行PREFERRED选举,如果否则直接对该分区执行PREFERRED选举,将leader分配到目标broker上。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory, ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
Claims (10)
1.一种kafka分区首选leader调优方法,其特征在于,包括如下步骤:
S1:根据broker对应的producer速率和consumer速率计算所有broker衡量值;
S2:判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance;
S3:在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,如果是则在分区副本排列后再对该分区执行PREFERRED选举,如果否则直接对该分区执行PREFERRED选举,将leader分配到目标broker上。
2.如权利要求1所述的一种kafka分区首选leader调优方法,其特征在于,步骤S1中具体包括:
S11:获取broker对应的broker producer速率、broker consumer速率;
S12:将producer权重设置为0.5;
S13:根据式子h=0.5*R(p)+(1-0.5)R(c) 计算得到该broker的衡量值h,其中R(p)为broker producer速率,R(c)为broker consumer速率。
3.如权利要求1或2所述的kafka分区首选leader调优方法,其特征在于,步骤S2中具体包括:
S21:在集群中设置一个容忍值t,将容忍值设置为0.1;
S22:根据式子avg(h1+h2...+hx)*(1+0.1)计算触发值;
S23:判断节点的衡量值是否大于或小于触发值,如果是则将该节点参与rebalance。
4.如权利要求3所述的一种kafka分区首选leader调优方法,其特征在于,步骤S3中包括:
S31:获取衡量值和触发值之间的大小关系,根据节点的衡量值判断是否需要对分区副本进行排列,如果h> avg(h1+h2...+hx)*(1+0.1),则该分区排列为{"1":[1,2]},h> avg(h1+h2...+hx)*(1+0.1),则需要将该分区副本列表按衡量值重新升序排列后为{"1":[1,2]},之后再对该分区执行PREFERRED选举,如果h< avg(h1+h2...+hx)*(1+0.1),则直接对该分区执行PREFERRED选举;
S32:在成功选举后获取各个broker的压力值,对各个broker的压力值进行比较获取压力值小于预设压力的目标broker,将leader分配到目标broker上;
S33:在topic test中修改对应分区数据。
5.一种kafka分区首选leader调优装置,其特征在于,包括
衡量值计算模块,用以根据broker对应的producer速率和consumer速率计算所有broker衡量值;
触发判断模块,用以判断节点的衡量值是否满足触发条件,如果满足,则将该节点参与rebalance;
选举执行模块,用以在topic test中,根据节点的衡量值判断是否需要对分区副本进行排列,如果是则在分区副本排列后再对该分区执行PREFERRED选举,如果否则直接对该分区执行PREFERRED选举,将leader分配到目标broker上。
6.如权利要求5所述的一种kafka分区首选leader调优装置,其特征在于:所述衡量值计算模块包括
第一获取单元,用以获取broker对应的broker producer速率、broker consumer速率;
第一设置单元,用以将producer权重设置为0.5;
第一计算单元,用以根据式子h=0.5*R(p)+(1-0.5)R(c) 计算得到该broker的衡量值h,其中R(p)为broker producer速率,R(c)为broker consumer速率。
7.如权利要求5或6所述的一种kafka分区首选leader调优方法,其特征在于:所述触发判断模块包括
第二设置单元,用以在集群中设置一个容忍值t,将容忍值设置为0.1;
第二计算单元,用以根据式子avg(h1+h2...+hx)*(1+0.1)计算触发值;
第一判断单元,用以判断节点的衡量值是否大于或小于触发值,如果是则将该节点参与rebalance。
8.如权利要求7所述的一种kafka分区首选leader调优装置,其特征在于:所述选举执行模块包括
第二判断单元,用以获取衡量值和触发值之间的大小关系,根据节点的衡量值判断是否需要对分区副本进行排列,如果h> avg(h1+h2...+hx)*(1+0.1),则该分区排列为{"1":[1,2]},h> avg(h1+h2...+hx)*(1+0.1),则需要将该分区副本列表按衡量值重新升序排列后为{"1":[1,2]},之后再对该分区执行PREFERRED选举,如果h< avg(h1+h2...+hx)*(1+0.1),则直接对该分区执行PREFERRED选举;
分配单元,用以在成功选举后获取各个broker的压力值,对各个broker的压力值进行比较获取压力值小于预设压力的目标broker,将leader分配到目标broker上;
修改单元,用以在topic test中修改对应分区数据。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211720096.XA CN116010094A (zh) | 2022-12-30 | 2022-12-30 | 一种kafka分区首选leader调优方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211720096.XA CN116010094A (zh) | 2022-12-30 | 2022-12-30 | 一种kafka分区首选leader调优方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010094A true CN116010094A (zh) | 2023-04-25 |
Family
ID=86020592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211720096.XA Pending CN116010094A (zh) | 2022-12-30 | 2022-12-30 | 一种kafka分区首选leader调优方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010094A (zh) |
-
2022
- 2022-12-30 CN CN202211720096.XA patent/CN116010094A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108683720B (zh) | 一种容器集群服务配置方法及装置 | |
WO2022222755A1 (zh) | 业务处理方法、装置及存储介质 | |
CN103607424B (zh) | 一种服务器连接方法及服务器系统 | |
CN104246705B (zh) | 一种用于管理计算系统操作的方法、系统、介质及装置 | |
CN109032801A (zh) | 一种请求调度方法、系统及电子设备和存储介质 | |
CN110380891A (zh) | 一种边缘计算服务资源配置方法、装置与电子设备 | |
CN103561055B (zh) | 基于会话的云计算环境下Web应用自动弹性扩展方法 | |
CN105653338B (zh) | 一种应用的更新方法及装置 | |
CN110471749A (zh) | 任务处理方法、装置、计算机可读存储介质和计算机设备 | |
CN106375102B (zh) | 一种服务注册方法、使用方法及相关装置 | |
CN116680060B (zh) | 面向异构计算系统的任务分配方法、装置、设备和介质 | |
CN108810166A (zh) | 路由管理方法、系统、计算机设备及计算机可读存储介质 | |
CN110233840B (zh) | 一种业务处理方法、装置、设备和存储介质 | |
CN111694748A (zh) | 压力测试方法及装置 | |
US9501321B1 (en) | Weighted service requests throttling | |
CN109842518A (zh) | 内容分发网络容灾方法、装置、计算机设备及存储介质 | |
US11768760B2 (en) | Testing of a resource manager of an application management system | |
JP2011013711A (ja) | サービスシステム、クラウドコンピューティングシステム及びサービスプログラム | |
CN116010094A (zh) | 一种kafka分区首选leader调优方法及装置 | |
CN111475251A (zh) | 一种集群容器调度方法、系统、终端及存储介质 | |
CN108418730A (zh) | 网络流量测试方法、装置、设备以及计算机可读存储介质 | |
CN110971478A (zh) | 云平台服务性能的压测方法、装置及计算设备 | |
CN114490374A (zh) | 应用的压力测试方法、电子设备、存储介质及程序产品 | |
CN114567637A (zh) | 一种智能设置负载均衡后端服务器权重的方法及系统 | |
CN113760672A (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 |