Kafka入门第四课:Kafka节点数、分区数、分区副本数设置及Kafka压力测试

一、分区副本数设置
	由于分区副本仅提供数据冗余的功能,且分区副本数量与集群吐吞量负相关,故冗余度在满足安全要求基础上设置为最小即可。
	故我们不妨将分区副本数设置为2.


二、kafka分区数设置
通过对单个分区的topic进行消费者和生产者的压力测试,得出单个分区所能提供的消费和生产的最大峰值吐吞量。
1、创建只有一个分区的topic。
kafka-topics.sh --create \
--zookeeper Linux001:2181   \
--partitions 1   \
--replication-factor 2 \
--topic test 

2、测试该topic的producer峰值吞吐量Tp
kafka-producer-pref-test.sh \
--producer-props bootstrap.servers=${bootstrap.servers} \
--producer.config ${KAFKA_HOME}/config/producer.properties \
--topic test \
--record-size 900000 \  (根据你们的业务进行配置)
--num-records 10000000 \
--throughput -1 
	--producer-prop参数下还可以额外指定其他键值对,如"acks=1"
	--throughput 代表每秒发多少条消息,-1代表不限流
测试环境测得约为Tp=80MB/s。  

3、测试该topic的consumer峰值吞吐量Tc
kafka-consumer-pref-test.sh \
--broker-list ${bootstrap.servers} \
--consumer.config=${KAFKA_HOME}/config/consumer.properties \
--topic test \
--messages 10000000 \
--reporting-interval 1000 \
--show-detailed-stats
 测试环境测得约为Tc=90MB/s。

4、计算所需要的topic分区数
假设你需要的目标吞吐量为T,则分区数num=T/min(Tp,Tc)。
分母取最小值表明即使取消费者额生产者的最小吞吐量,只要设置为num的分区数,仍能达到目标吐吞量要求。

假设我们需要的吐吞量为100MB/s,则分区数num=100/min(80,90)=2

由于消费者Flink数量为3台,为保证充分利用flink计算资源,避免flink消费者空转,我们不妨将Kafka的topic分区设置为3。
后续若业务升级再动态扩容topic分区到6个、9个、12个...保持与flink消费者数n:1的关系。
动态扩容topic分区命令:
 kafka-topics.sh --alter \
 --zookeeper ${zookeeper.url}  \
 --partitions 6	\
 --topic t001 	

三、kafka生产者性能优化测试
我们设置好topic的分区数、分区副本数后,可以使用控制变量的方式来测试,寻找公司集群上各参数的最佳值。
会影响生产端吞吐量的参数:batch.size\longer.ms\acks\,这些参数都可以在--producer-props参数后。
其他参数还有:压缩格式、网络带宽。

四、kafka消费者性能优化测试
我们设置好topic的分区数、分区副本数后,可以使用控制变量的方式来测试,寻找公司集群上各参数的最佳值。
会影响消费端吞吐量的参数:--fetch-size\--threads
其他参数还有:压缩格式、网络带宽。

五、kafka机器节点数量设置
	n=2*(峰值生产速度*副本数/100)+1
	更关注峰值生产速度是为了避免数据在业务层积压。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kafka 分区与 brokers(Kafka 服务节点)之间有一定的关系,具体体现在以下几个方面: 1. 分区分布:Kafka 的主题(Topic)被分为多个分区,每个分区都会被分配到不同的 broker 上。分区决定了一个主题可以被分配到多少个 broker 上进行并行处理。如果分区小于 brokers 量,那么部分 broker 可能会没有分配到分区,造成资源浪费;如果分区大于 brokers 量,那么每个 broker 上可能会有多个分区,增加了并行处理的能力。 2. 吞吐量和并行度:Kafka分区也会影响消费者(Consumer)的吞吐量和并行度。每个消费者可以独立地消费一个或多个分区的消息,因此增加分区可以提高消费者的并行度,从而提高整体的吞吐量。 3. 容错性:Kafka 使用分区副本(Replica)来实现容错性。每个分区都可以有多个副本分布在不同的 broker 上,以防止据丢失。在创建主题时,可以设置副本因子(Replication Factor)来决定一个主题的每个分区应该有多少个副本。通常建议将副本因子设置为不小于 brokers 量的值,以确保每个 broker 都能存储主题的副本。 需要根据应用程序的需求和系统环境来设置适当的分区和 brokers 量,并保持它们之间的平衡。 总结起来,Kafka 分区与 brokers 之间的关系主要体现在分区分布、吞吐量和并行度以及容错性方面。分区设置应考虑到消费者的并行度、吞吐量需求和副本的容错性要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值