Размер кластера можно определить следующими способами.
Самый точный способ смоделировать ваш сценарий использования - смоделировать ожидаемую нагрузку на собственном оборудовании. Вы можете использовать инструменты генерации нагрузки 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
.