分布式消息服务KAFKA版-修改Kafka分区平衡:带宽限制值估算方法
带宽限制值估算方法
带宽限制值受分区平衡任务执行时间、分区副本Leader/Follower分布情况以及消息生产速率等因素影响,具体分析如下。
- 带宽限制值作用范围为整个Broker,对该Broker内所有副本同步的分区进行带宽限流。
- 带宽限制会将分区平衡后新增的副本视为Follower副本限流,分区平衡前的Leader副本视为Leader副本限流,Leader副本的限流和Follower副本限流分开计算。
- 带宽限制不会区分是正常的生产消息造成的副本同步还是分区平衡造成的副本同步,因此两者的流量都会被限流统计。
假设分区平衡任务需要在200s内完成,每个副本的数据量为100MB,在以下几种场景中,估算带宽限制值。
场景一:Topic1有2分区2副本,Topic2有1分区1副本,所有Leader副本在同一个Broker上,如表4所示,Topic1和Topic2分别需要新增1个副本,如表5所示。
Topic名称 |
分区名称 |
Leader副本所在Broker |
Follower副本所在Broker |
---|---|---|---|
Topic1 |
0 |
0 |
0,1 |
Topic1 |
1 |
0 |
0,2 |
Topic2 |
0 |
0 |
0 |
Topic名称 |
分区名称 |
Leader副本所在Broker |
Follower副本所在Broker |
---|---|---|---|
Topic1 |
0 |
0 |
0,1,2 |
Topic1 |
1 |
0 |
0,1,2 |
Topic2 |
0 |
0 |
0,2 |
如图7所示,有3个副本需要从Broker 0拉取数据,Broker 0中每个副本的数据量为100MB,Broker 0中只有Leader副本,Broker 1和Broker 2中只有Follower副本,由此得出以下数据:
- Broker 0在200s内完成分区平衡所需的带宽限制值=(100+100+100)/200=1.5MB/s
- Broker 1在200s内完成分区平衡所需的带宽限制值=100/200=0.5MB/s
- Broker 2在200s内完成分区平衡所需的带宽限制值=(100+100)/200=1MB/s
综上所述,若想要在200s内完成分区平衡任务,带宽限制值应设为大于等于1.5MB/s。由于控制台的带宽限制只能是整数,因此带宽限制值应设为大于等于2MB/s。
场景二:Topic1有2分区1副本,Topic2有2分区1副本,Leader副本分布在不同Broker上,如表6所示,Topic1和Topic2分别需要新增1个副本,如表7所示。
Topic名称 |
分区名称 |
Leader副本所在Broker |
Follower副本所在Broker |
---|---|---|---|
Topic1 |
0 |
0 |
0 |
Topic1 |
1 |
1 |
1 |
Topic2 |
0 |
1 |
1 |
Topic2 |
1 |
2 |
2 |
- kafka是什么_kafka介绍_分布式消息服务Kafka版
- 分布式消息服务Kafka版与分布式消息服务RocketMQ版的区别_Kafka与RocketMQ对比_Kafka与RocketMQ差异
- 分布式消息系统Kafka_分布式消息系统_分布式消息kafka可以解决什么问题-华为云
- Kafka与其他消息队列的对比_什么是Kafka_分布式消息系统-华为云
- 分布式消息中间件实战_分布式消息实战_分布式消息-华为云
- 分布式消息中间件的作用_分布式消息中间件_分布式消息-华为云
- 分布式消息服务有哪些_分布式消息服务哪个好_分布式消息-华为云
- Kafka架构_Kafka如何实现负载均衡_Kafka数据存储方式-华为云
- 分布式消息服务优势_分布式消息服务_消息队列-华为云
- RocketMQ是什么_RocketMQ介绍_分布式消息服务RocketMQ版