问题描述

【读者答疑】为啥我创建的topic分区分配不均匀?_kafka

问题描述图解

【读者答疑】为啥我创建的topic分区分配不均匀?_kafka_02

这位朋友的问题是:

  1. 集群有6个Broker
  2. 创建topicA 有60个分区 单副本
  3. Broker-0 中挂载了2个磁盘,有2个目录

为啥创建topicA的时候, 最终分配方式 目录1和目录2不是平均分配呢?

问题解答

这个问题是 分区副本分配策略的问题

分区在Broker层面的分配策略

按照当前的topic分区数量平均分配, 负载均衡, 所以每个Broker都可以分配到 10个分区。

单Broker多目录的分配策略

按照 每个目录总分区数量进行平均分配, 这个时候跟这个Topic的分区数量就没有关系了,而是总数量

假如分配前 目录1就已经存在了10个分区, 而目录2 只有3个,按照分区总数量平均分配策略, 那么现在Broker分配了10个新分区的时候,就会优先把 目录2 分配满了10个,然后再轮流分配。

【读者答疑】为啥我创建的topic分区分配不均匀?_kafka_03

问题扩展

关于分区副本分配的规则可以简单看下图

【读者答疑】为啥我创建的topic分区分配不均匀?_分布式_04

具体详情请看文章

  1. ​关于分区副本分配的一个Bug​
  2. ​分区副本分配规则源码解析​