#architecture #apache-kafka #partitioning #database-partitioning
#архитектура #apache-kafka #разделение #разделение базы данных
Вопрос:
Я нашел механизм разделов Kafka неудобным и неудобным. Kafka не поддерживает функцию автоматического переназначения разделов, что приводит к следующему:
- Если вы хотите добавить узлы, вам нужно вручную выполнить
bin/kafka-reassign-partitions.sh
скрипт. Вы должны вручную записать переназначения разделов для каждой темы в формате JSON. - Я полагаю, что при сбое брокера реплики должны быть активированы без перераспределения. Это может вызвать «горячие точки». Я прав?
Вопросы:
- Есть ли какая-либо причина архитектуры / дизайна, по которой у Kafka не было / не должно быть автоматического переназначения разделов? Это потому, что это снижает производительность?
- За чем стоит алгоритм переназначения разделов
bin/kafka-reassign-partitions.sh
? Использует ли Kafka какие-либо оптимизации (т.Е. Согласованное хеширование) или разделение в диапазоне хэшей?
Ответ №1:
-
Поскольку данные хранятся на брокерах, если вы переназначаете раздел другому брокеру, все данные должны быть скопированы.
Кроме того, чтобы не потерять никаких гарантий, на время копирования вы должны поддерживать дополнительные реплики (старые и новые). Обратите внимание, что выполняется KIP для улучшения этого конкретного поведения (KIP-435).
Перемещение данных является дополнительной нагрузкой на кластер и, очевидно, может оказать значительное влияние на производительность
-
Поведение по умолчанию
kafka-reassign-partitions.sh
крайне наивно, и я действительно рекомендую создать файл переназначения самостоятельно, если вы собираетесь использовать его в реальной среде.По умолчанию он переназначит все разделы, в основном имитируя создание всех разделов с новыми брокерами. Хотя это очень хорошо балансирует лидеров, это приводит к копированию тонны данных.
На практике аналогичный результат может быть достигнут путем перемещения только очень небольших частей разделов, что ограничивает копирование данных и воздействие на кластер.
Если вы не уверены, как создать файл переназначения, существует множество инструментов, которые могут генерировать и применять переназначения: kafka-kit, круиз-контроль
Комментарии:
1. К вашему сведению, я внедрил простой инструмент для генерации предложений по переназначению с учетом возможностей брокера и размеров разделов. Может быть, кто-то найдет это полезным: github.com/dav-garcia/brod-rebalancer