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

Я рассматриваю, как развернуть наш кластер kafka: большой кластер с несколькими группами брокеров или несколькими кластерами. Если большой кластер, я хочу знать, насколько большим может быть кластер кафки. У kafka есть узел контроллера, и я не знаю, сколько брокеров он может поддерживать. И еще одна тема - _consume_offset_, насколько она велика и можем ли мы добавить к ней больше разделов.

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Размер кластера можно определить следующими способами.

Самый точный способ смоделировать ваш сценарий использования - смоделировать ожидаемую нагрузку на собственном оборудовании. Вы можете использовать инструменты генерации нагрузки kafka kafka-producer-perf-test и kafka-consumer-perf-test.

На основе метрик производителя и потребителя мы можем определить количество брокеров для нашего кластера.

Другой подход - без моделирования, основанного на расчетной скорости, с которой вы получаете данные, для которых требуется срок хранения данных.

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

Пример

Если у вас 800 сообщений в секунду, по 500 байт каждый, тогда ваша пропускная способность равна 800*500/(1024*1024) = ~0.4MB/s. Теперь, если ваша тема разбита на разделы, и у вас есть 3 брокера, работающих с 3 репликами, это приведет к 0.4/3*3=0.4MB/s.

Более подробную информацию об архитектуре можно получить по адресу confluent .

В кластере Kafka один брокер работает как контроллер . Если у вас кластер из 100 брокеров, то один из них будет выполнять функции контроллера.

Если мы говорим внутри, каждый брокер пытается создать узел (эфемерный узел) в зоопарке (/ controller). Первый становится контроллером. Остальные брокеры получают исключение («узел уже существует»), они устанавливают наблюдение на контроллере. Когда контроллер умирает, эфемерный узел удаляется, и наблюдающие брокеры получают уведомление о процессе выбора контроллера.

Функциональность контроллера можно найти здесь .

Тема __consumer_offset используется для хранения смещений, зафиксированных потребителями. Его значение по умолчанию - 50, но его можно установить для большего количества разделов. Чтобы изменить, установите свойство offsets.topic.num.partitions.

0 голосов
/ 08 мая 2019

Я лично работал с производственными кластерами Kafka от 3 до 20 брокеров. Все они работали нормально, это зависит только от того, какую нагрузку вы на это бросаете. С Kafka моя общая рекомендация заключается в том, что лучше иметь меньшее количество более крупных / более мощных брокеров, чем иметь кучу крошечных серверов.

Для стоящего кластера каждый добавляемый вами брокер увеличивает «перекрестные помехи» между узлами, поскольку им приходится перемещать разделы вокруг, реплицировать данные, а также поддерживать метаданные в синхронизации. Эта дополнительная болтовня сети может повлиять на то, какую нагрузку может выдержать брокер. Как правило, добавление брокеров увеличивает общую емкость, но необходимо сместить разделы так, чтобы нагрузка была правильно сбалансирована по всему кластеру. В связи с этим гораздо лучше начинать с 10 узлов, чтобы темы и разделы были распределены равномерно с самого начала, чем начинать с 6 узлов, а затем добавлять 4 узла позже.

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

В теме __consumer_offsets может быть сколько угодно разделов, но по умолчанию установлено 50 разделов. Поскольку это сжатая тема, при условии, что не происходит чрезмерной фиксации (это уже дважды происходило со мной в производственных средах), тогда настроек по умолчанию должно быть достаточно для почти любого сценария. Вы можете посмотреть параметры конфигурации для тем смещения потребителя, посмотрев свойства брокера, которые начинаются с offsets. в официальной документации Kafka.

Более подробную информацию вы можете получить на официальной странице документации Kafka: https://kafka.apache.org/documentation/

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