发布网友 发布时间:2022-04-27 04:20
共1个回答
热心网友 时间:2022-06-26 02:55
kafka 副本设置大于节点数,虽然是高可用的,但是该topic在有broker宕机时,可能发生无法使用的情况。topic一旦使用又不能轻易删除重建,因此动态增加副本因子就成为最终的选择。
原因分析:假设我们有3个kafka broker分别broker0、broker1、broker2.当我们创建的topic有3个分区partition时并且replication-factor为1,基本上一个broker上一个分区。当一个broker宕机了,该topic就无法使用了,因为三个分区只有两个能用,当我们创建的topic有3个分区partition时并且replication-factor为2时,可能分区数据分布情况是
broker0, partiton0,partiton1,
broker1, partiton1,partiton2
broker2, partiton2,partiton0,
每个分区有一个副本。当其中一个broker宕机了,kafka集群还能完整凑出该topic的三个分区,例如当broker0宕机了,可以通过broker1和broker2组合出topic的三个分区。但是如果两个broker宕机,那kakfa集群就无法凑出该topic的三个分区,例如当broker0和broker1宕机后,只有broker2上partation2和partation0可用,此时partation1处于无法使用的状态。