Kafka分区重新分配算法及原因

am46iovg  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(424)

我觉得Kafka的作品既尴尬又不舒服。kafka不支持导致以下情况的自动分区重新分配功能:
如果要添加节点,必须手动执行 bin/kafka-reassign-partitions.sh 脚本。您必须以json格式手动写出每个主题的分区重新分配。
在代理失败时,我认为应该在不重新分区的情况下激活副本。会引起热点。我说得对吗?
问题:
Kafka没有/不应该进行自动分区重新分配,有什么建筑/设计原因吗?这是因为它会降低性能吗?
后面的分区重新分配算法是什么 bin/kafka-reassign-partitions.sh ? Kafka是否使用任何优化(即一致哈希)或原始哈希范围划分?

z18hc3ub

z18hc3ub1#

由于数据存储在代理上,如果将分区重新分配给另一个代理,则必须复制所有数据。
此外,为了不丢失任何保证,在复制期间,您必须维护额外的副本(旧副本和新副本)。请注意,有一个kip正在进行中,以改善该特定行为(kip-435)。
移动数据是集群的额外负载,显然会对性能产生重大影响
违约行为 kafka-reassign-partitions.sh 非常幼稚,如果您打算在真实环境中使用它,我建议您自己创建一个重新分配文件。
默认情况下,它将重新分配所有分区,基本上模拟使用新代理创建所有主题。虽然这很好地平衡了领导者,但这会导致大量数据需要复制。
在实践中,通过只移动分区的一小部分就可以获得类似的结果,从而限制数据拷贝和对集群的影响。
如果您不确定如何创建一个重新分配文件,那么有很多工具可以生成和应用重新分配:Kafka工具包、巡航控制

相关问题