我发现卡夫卡的分区机制笨拙且不舒服。 Kafka不支持导致以下问题的自动分区重新分配功能:
bin/kafka-reassign-partitions.sh
脚本。您必须手动以JSON格式写出每个主题的分区重新分配。问题:
bin/kafka-reassign-partitions.sh
后面的分区重新分配算法是什么? Kafka是否使用任何优化(即一致哈希)还是原始哈希范围划分? 答案 0 :(得分:2)
由于数据存储在代理中,因此,如果您将分区重新分配给另一个代理,则必须复制所有数据。
此外,在有效期内,不要失去任何保证 复制,您必须维护额外的副本(旧副本和新副本 那些)。请注意,正在进行KIP改进特定行为(KIP-435)。
移动数据是集群上的额外负载,显然会对性能产生重大影响
kafka-reassign-partitions.sh
的默认行为非常幼稚,如果您打算在实际环境中使用它,我真的建议您自己制作一个重新分配文件。
默认情况下,它将重新分配所有分区,基本上模拟了使用新代理创建所有主题的过程。虽然这可以很好地平衡领导者,但可以复制大量数据。
实际上,仅移动分区的一小部分即可达到类似的结果,从而限制了数据复制以及对集群的影响。
如果您不确定如何制作重新分配文件,可以使用一系列工具来生成和应用重新分配:kafka-kit,cruise-control