Кластер использует controller node (через ZooKeeper или KRaft) для управления leader election и метаданными. Каждый broker отвечает за лидерство определённых партиций, распределяя нагрузку по кластеру.
Топики разбиваются на партиции для обеспечения параллелизма. Сообщения маршрутизируются с помощью:
hash(key) % partition_count для упорядочивания по ключуБольше партиций — выше throughput, но увеличивается overhead координации.
Каждая партиция назначается ровно одному consumer внутри группы, что позволяет параллельную обработку. Group coordinator broker управляет rebalancing, когда consumers присоединяются или покидают группу.
Каждая партиция имеет одного leader и настраиваемое количество followers (реплик). Записи идут в leader; followers синхронизируются асинхронно. Параметры replication.factor и min.insync.replicas контролируют гарантии durability.
Оффсеты consumer'ов хранятся во внутреннем топике (__consumer_offsets). Это позволяет:
Порядок гарантирован только внутри партиции. Используй consistent key routing, чтобы связанные сообщения попадали в одну партицию.
enable.idempotence=true, isolation.level=read_committed)Сообщения сохраняются на основе:
retention.msretention.byteslinger.ms и batch.sizesendfile() syscallsnappy или lz4В распределённой системе очередей сообщений, похожей на Kafka, одна partition может быть назначена нескольким потребителям в одной consumer group для повышения параллелизма и пропускной способности.
Новый — ещё не проверен сообществом
Вы