kafka的分区在broker上的分配方式

首先,这个过程与分区在rebalance是不一样的。Rebalance是发生在消费者群组中,为了将一个topic中的分区分配给某一个消费者的算法。

问题背景

假设现在的kafka集群中有4个broker,现在需要创建一个包含5个partition的topic,复制因子是2,那么这些分区以及副本在这4个broker上如何分配的呢?

问题分析

首先,我们要明确进行分区分配的目标是什么?
1. 保证所有的分区以及副本可以均衡在分布上所有的broker上
2. 保证同一个分区及其副本尽量不要分布在同一个broker上

那么,话不多说,我们直接来模拟一下这个分配的过程吧。

过程模拟

预备阶段

  • 将所有的broker进行排序,可以按id进行排序,得到b1,b2,b3,b4
  • 5个分区,分别p1,p2,p3,p4,p5
  • 分区的副本,比如p1的副本我们记为p1-1,加上p1,正好两个副本

那么,接下来,我们就可以进行分配了。

  • 随机选择一个broker,比如选到了b2,然后将p1分配给b2,p2分配到b3,p3分配到b4,p4分配到b1,p5分配到b2,至此,所有分区的首领分区已经分配结束了;
  • 从每个分区的首领分区开始,p1分配在b2,所以p1-1分配在b3
  • p2分配在b3,所以p2-1分配在b4;p3分配在b4,所以p3-1分配在b1;p4分配在b1,所以p4-1分配在b2;p5分配在b2,所以p5-1分配在b3

至此,分区的分配就结束了。最后的结果是
b1:{p3-1,p4}
b2:{p4-1,p5,p1}
b3:{p5-1,p1-1,p2}
b4:{p2-1,p3}

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值