К списку
Асинхронные системы и очередиSeniorТехническое

Механизм доставки и обработки сообщений в Apache Kafka

Краткий ответ

В Apache Kafka сообщения публикуются продюсерами в топики, разбитые на партиции, а консумеры читают их по смещениям. Надежность достигается за счет репликации данных и подтверждений получения сообщений.

Развёрнуто

Краткий ответ

Apache Kafka реализует модель публикации-подписки, где продюсеры отправляют сообщения в топики, которые делятся на партиции. Консумеры читают данные, используя смещения (offsets), что обеспечивает точное отслеживание прогресса. Для гарантированной доставки Kafka применяет репликацию партиций и механизм подтверждений (acks).


Как это работает

Apache Kafka строится на концепции топиков — логических каналов, разбитых на партиции для масштабируемости и параллелизма.

  • Продюсер публикует сообщения в определённый топик. Каждое сообщение помещается в одну из партиций, выбор которой может зависеть от ключа сообщения.
  • Сообщения в партиции упорядочены и идентифицируются уникальным смещением (offset), позволяющим консумерам ориентироваться, какие сообщения уже прочитаны.
  • Консумер подписывается на топик и читает сообщения из партиций, сохраняя текущий offset для восстановления в случае сбоев.
  • Для обеспечения надежности доставки Kafka использует:
    • Репликацию партиций — копирование данных на несколько брокеров для отказоустойчивости.
    • Механизм подтверждений (acks) от брокера продюсеру, который может быть настроен для разных уровней гарантии доставки (от без подтверждения до подтверждения записи на все реплики).
Компонент Роль Особенности
Продюсер Отправляет сообщения в топики Может выбирать партицию по ключу
Топик Логический канал с несколькими партициями Партиции хранят упорядоченные сообщения
Консумер Читает сообщения из партиций Использует offset для отслеживания
Брокер Хранит и реплицирует сообщения Отвечает за подтверждения записи

Пример

Топик: orders
Партиции: 3
Продюсер отправляет заказ с ключом user_123,
сообщение попадает в партицию 1.
Консумер читает партицию 1, смещение 0, 1, 2... и подтверждает прочтение.

В этом примере продюсер гарантирует, что сообщение попадет в нужную партицию, а консумер точно знает, с какого сообщения продолжить чтение.

Что важно знать на собеседовании

  • Kafka использует модель публикации-подписки с партицированными топиками для масштабируемости.
  • Смещение (offset) — ключевой элемент для отслеживания прочитанных сообщений консумерами.
  • Репликация партиций обеспечивает отказоустойчивость и надежность данных.
  • Механизм подтверждений (acks) регулирует уровень гарантии доставки сообщений.
  • Консумеры могут управлять смещениями вручную или автоматически.
  • Партиционирование влияет на порядок доставки сообщений и балансировку нагрузки.

Тема: Асинхронные системы и очереди | Уровень: senior