Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture Kafka分区重新分配算法及其原因_Architecture_Apache Kafka_Partitioning_Database Partitioning - Fatal编程技术网

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

Architecture Kafka分区重新分配算法及其原因,architecture,apache-kafka,partitioning,database-partitioning,Architecture,Apache Kafka,Partitioning,Database Partitioning,我觉得卡夫卡的故事既尴尬又不舒服。Kafka不支持导致以下情况的自动分区重新分配功能: 如果要添加节点,必须手动执行bin/kafka reassign partitions.shscript。您必须以JSON格式手动写出每个主题的分区重新分配 在代理失败时,我认为应该在不重新分区的情况下激活副本。这可能会导致热点。我说得对吗 问题: 卡夫卡没有/不应该自动重新分配分区有什么架构/设计原因吗?这是因为它会降低性能吗 bin/kafka reassign partitions.sh后面的分区重新分

我觉得卡夫卡的故事既尴尬又不舒服。Kafka不支持导致以下情况的自动分区重新分配功能:

  • 如果要添加节点,必须手动执行
    bin/kafka reassign partitions.sh
    script。您必须以JSON格式手动写出每个主题的分区重新分配
  • 在代理失败时,我认为应该在不重新分区的情况下激活副本。这可能会导致热点。我说得对吗
  • 问题:

  • 卡夫卡没有/不应该自动重新分配分区有什么架构/设计原因吗?这是因为它会降低性能吗
  • bin/kafka reassign partitions.sh
    后面的分区重新分配算法是什么?Kafka是否使用任何优化(即一致散列)或原始散列范围划分
  • 由于数据存储在代理上,如果将分区重新分配给另一个代理,则必须复制所有数据

    此外,在合同有效期内,不得失去任何担保 复制时,您必须维护额外的副本(旧副本和新副本) 一个)。请注意,有一个KIP正在进行中,以改进该特定行为()

    移动数据是集群上的额外负载,显然会对性能产生重大影响

  • kafka reassign partitions.sh的默认行为非常幼稚,如果您打算在真实环境中使用它,我真的建议您自己创建一个重新分配文件

    默认情况下,它将重新分配所有分区,基本上模拟使用新代理创建所有主题。虽然这很好地平衡了领导者,但这会导致大量数据需要复制

    实际上,通过只移动分区的一小部分就可以实现类似的结果,从而限制数据拷贝和对集群的影响

    如果您不确定如何创建重新分配文件,那么有一系列工具可以生成和应用重新分配: