Алгоритм и причины переназначения разделов Кафки - PullRequest
0 голосов
/ 08 апреля 2019

Я нашел механизм перегородок Кафки неловким и неудобным.Kafka не поддерживает функцию автоматического переназначения разделов, которая приводит к следующему:

  1. Если вы хотите добавить узлы, вы должны вручную выполнить скрипт bin/kafka-reassign-partitions.sh.Необходимо вручную выписать переназначения разделов для каждой темы в формате JSON.
  2. При сбое посредника, я полагаю, реплики должны быть активированы без перераспределения.Это может вызвать горячие пятна. Я прав?

Вопросы:

  1. Существуют ли какие-либо архитектурные / конструктивные причины, по которым Кафка не / не должен был иметьпереназначение авто разделов?Это потому, что это снижает производительность?
  2. Что такое алгоритм переназначения разделов, стоящий за bin/kafka-reassign-partitions.sh?Использует ли Кафка какие-либо оптимизации (т. Е. Согласованное хеширование) или непосредственное разбиение диапазона хеша?

1 Ответ

2 голосов
/ 08 апреля 2019
  1. Поскольку данные хранятся на посредниках, если вы переназначаете раздел на другого посредника, необходимо скопировать все данные.

    Кроме того, чтобы не потерять каких-либо гарантий, на время скопировать, вы должны поддерживать дополнительные реплики (старые и новые из них). Обратите внимание, что для улучшения этого конкретного поведения выполняется KIP ( KIP-435 ).

    Перемещение данных является дополнительной нагрузкой на кластер и, очевидно, может оказать значительное влияние на производительность.

  2. Поведение по умолчанию kafka-reassign-partitions.sh крайне наивно, и я действительно рекомендую создать файл переназначения самостоятельно, если вы собираетесь использовать его в реальной среде.

    По умолчанию он переназначает все разделы, в основном имитируя создание всех тем с новыми брокерами. Хотя это очень хорошо уравновешивает лидеров, это приводит к тонне данных для копирования.

    На практике аналогичного результата можно достичь, перемещая только очень маленькие части разделов, ограничивая тем самым копирование данных и воздействие на кластер.

    Если вы не знаете, как создать файл переназначения, существует множество инструментов, которые могут генерировать и применять переназначения: kafka-kit , круиз-контроль

...