码迷,mamicode.com
首页 > 其他好文 > 详细

Kafka分区管理

时间:2020-07-29 09:54:05      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:second   区间   设置   tst   建议   个数   脚本   sum   开启   

1.优先副本的选举

优先副本是为了解决负载失衡的情况,是指在AR集合列表中的第一个副本,比如分区0的AR集合列表为[1,2,0],那么分区0的优先副本即为1。理想情况下优先副本就是该分区的leader副本

优先副本的选举是指通过一定的方式促使优先副本选举为leader副本,来促进集群的负载均衡,也称为分区平衡

分区平衡并不意味着Kafka集群的负载均衡,因为还要考虑集群中的分区分配是否均衡。更进一步,每个分区的leader副本的负载也是各不相同的

Kafka中提供了分区自动平衡的功能,默认参数为auto.leader.rebalance.enable,默认值为true,开启该功能后,Kafka控制器会启动一个定时任务,该任务会轮询所有broker节点,计算每个节点的分区不平衡率(非优先副本的leader个数/分区总数)是否超过leader.imbalance.per.broker.percentage的值,默认为10%,超过则自动执行优先副本的选举动作,执行周期由leader.imbalance.check.interval.seconds控制,默认300秒

生产中不建议设置自动分区平衡,可能会引起客户端一定程度的阻塞,因为不能自主控制选举操作

kafka-preferred-replica-election.sh脚本提供了对分区leader副本进行重新平衡的功能

2.分区重分配

kafka-reassign-partitions.sh脚本提供了执行分区重分配的功能

首先创建一个包含主题清单的文件,其次根据主题清单和broker节点清单生成一份重分配方案,最后根据方案执行

3.分区数的选择

1.性能测试

kafka-producer-perf-test.sh

kafka-consumer-perf-test.sh

2.分区数和吞吐量之间的关系

首先创建分区数为1、20、50、100、200、500、1000的主题,副本因子都设置为1

生产者测试:

bin/kafka-producer-perf-test.sh --topic topic-1 --num-records 100000 --records-size 1024 --throughput -1 --producer-props bootstrap.servers=localhost:9092 acks=1

发送速度分别为:

31.10 MB/sec、98.25 MB/sec、104.33 MB/sec、106.38 MB/sec、105.46 MB/sec、93.36 MB/sec、84.92 MB/sec

可以看出并不是分区数越多吞吐量越大,所以可以通过测试找出一个合理的临界值区间,消费者也可以同样验证

Kafka分区管理

标签:second   区间   设置   tst   建议   个数   脚本   sum   开启   

原文地址:https://www.cnblogs.com/jordan95225/p/13394614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!