Брокер — это отдельный сервер Kafka. Он получает сообщения от продюсеров и записывает их на диск. Также он отвечает на запросы консьюмеров, отдавая им сообщения из партиций. Брокер может обрабатывать тысячи партиций и миллионы сообщений в секунду.
Брокеры работают в составе кластера. Один из брокеров кластера является контроллером (cluster controller). Он отвечает за административные операции: распределение партиций по брокерам и мониторинг отказов брокеров.
Лидеры и фолловеры
Архитектура Кафки заточена на отказоустройчивость: каждая партиция реплицируется на разные брокеры. Количеством реплик можно управлять с помощью параметра
replication factor. Обычно рекомендуют
replication factor = 3. Это значит, что для каждой партиции будет создано 3 реплики:➡️ 1 лидер — принимает сообщения от продюсеров и отдаёт их консюмерам
➡️ 2 фолловера — обычно не обрабатывают запросы клиентов, а пассивно копируют сообщения лидера (работают как бэкап).
Фолловер, который забрал все актуальные данные с лидера, называется insync репликой. Если с лидером что-то случится, то контроллер выберет из фолловеров нового лидера. Для распределения нагрузки на брокеры контроллер старается раскидать лидеров по разным брокерам.
Для экономии трафика можно настроить, чтобы консьюмеры читали из ближайшей insync реплики, но там добавляются задержки, и это может быть актуально только для особых случаев. Обычно пишут в лидер и читают из лидера.
#kafka
