Ответ
Брокер в Apache Kafka — это отдельный сервер (нода) в кластере, который отвечает за хранение, запись и чтение данных (сообщений). Каждый брокер идентифицируется уникальным целочисленным ID и является основным исполнительным компонентом кластера.
Основные функции брокера:
- Хранение партиций топиков: Каждый брокер хранит одну или несколько партиций (сегментов данных) для различных топиков.
- Обработка запросов: Принимает запросы на запись (produce) от продюсеров и на чтение (fetch) от консьюмеров.
- Репликация: Управляет репликами партиций для обеспечения отказоустойчивости (один брокер — лидер партиции, другие — followers).
- Участие в контроллере: Один из брокеров в кластере выполняет роль контроллера, управляя метаданными и выборами лидера.
Пример базовой конфигурации брокера (server.properties):
# Уникальный идентификатор брокера в кластере
broker.id=1
# Адрес и порт для подключения клиентов
listeners=PLAINTEXT://:9092
# Директории для хранения логов (данных) партиций
log.dirs=/var/lib/kafka/data
# Количество партиций по умолчанию для новых топиков
num.partitions=3
# Коэффициент репликации по умолчанию
default.replication.factor=2
Как брокеры образуют кластер:
- Несколько брокеров (нод) объединяются в кластер.
- Для координации они используют Apache ZooKeeper (или встроенный KRaft в новых версиях).
- Клиенты (продюсеры/консьюмеры) подключаются к любому работающему брокеру, который выступает в роли bootstrap server и предоставляет метаданные о кластере.
Почему это важно для архитектуры: Брокеры обеспечивают распределённое, горизонтально масштабируемое и отказоустойчивое хранилище для потоков данных.