我发现Kafka的分区机制很尴尬和不舒服。 Kafka不支持自动分区重新分配功能,导致以下内容:
bin/kafka-reassign-partitions.sh
脚本。您必须以JSON格式手动写出每个主题的分区重新分配。问题:
bin/kafka-reassign-partitions.sh
背后的分区重新分配算法? Kafka是否使用任何优化(即一致哈希)或原始哈希范围分区?kafka-reassign-partitions.sh
的默认行为非常天真,如果您打算在真实环境中使用它,我真的建议您自己制作一个重新分配文件。
默认情况下,它将重新分配所有分区,基本上模拟使用新代理创建所有主题。虽然这很好地平衡了领导者,但这导致需要复制大量数据。
实际上,通过仅移动分区的非常小的部分可以实现类似的结果,从而限制数据复制和对集群的影响。
如果您不确定如何制作重新分配文件,可以使用一系列工具生成并应用重新分配:kafka-kit,cruise-control