问题描述
问题描述图解
这位朋友的问题是:
- 集群有6个Broker
- 创建topicA 有60个分区 单副本
- Broker-0 中挂载了2个磁盘,有2个目录
为啥创建topicA的时候, 最终分配方式 目录1和目录2不是平均分配呢?
问题解答
这个问题是 分区副本分配策略的问题
分区在Broker层面的分配策略
按照当前的topic分区数量平均分配, 负载均衡, 所以每个Broker都可以分配到 10个分区。
单Broker多目录的分配策略
按照 每个目录总分区数量进行平均分配, 这个时候跟这个Topic的分区数量就没有关系了,而是总数量 假如分配前 目录1就已经存在了10个分区, 而目录2 只有3个,按照分区总数量平均分配策略, 那么现在Broker分配了10个新分区的时候,就会优先把 目录2 分配满了10个,然后再轮流分配。
问题扩展
关于分区副本分配的规则可以简单看下图
具体详情请看文章
- 关于分区副本分配的一个Bug
- 分区副本分配规则源码解析