Apache Kafka используется во многих крупнейших компаниях, включая членов Fortune 1001. Инструмент нужен для обработки сообщений в сложных распределённых системах в режиме реального времени. В финансовом секторе2 он обрабатывает транзакции и события в реальном времени; по данным кейсов, совокупная нагрузка в экосистемах крупных финансовых компаний может достигать порядка 1,3 трлн сообщений в сутки. Десятки миллионов сообщений в секунду в крупных ретейл-системах.
Сферы применения ИТ-решения — электронная коммерция, стриминговые сервисы, банки и финансы, рекламные платформы, социальные сети, транспорт и логистика, производство и промышленность, телеком.
Что такое Apache Kafka: определение для новичков
Kafka — это почтальон в мире ИТ. Он принимает сообщения от отправителя (производителя) и передаёт получателю (потребителю). Программное обеспечение выступает в роли посредника, который:
- следит, чтобы данные не потерялись (репликация);
- распределяет данные по потребителям;
- объединяет получателей в группы, отдаёт данные, и получатели будут делиться ими уже между собой.

Apache Kafka (часто сокращают до Kafka) — это распределённый программный брокер сообщений с открытым исходным кодом. Разрабатывается и поддерживается фондом Apache Software Foundation (ASF). Среди других проектов организации — веб-сервер Apache HTTP Server, экосистема для распределённой обработки больших данных Apache Hadoop, инструмент сборки Apache Maven и сотни других.
ПО Kafka позволяет решить следующие задачи:
- создавать высокопроизводительные конвейеры обработки данных;
- проводить потоковую аналитику;
- интегрировать данные и критически важные приложения.
В России для ряда корпоративных и государственных клиентов существуют требования по использованию ПО из реестра российского ПО и ограничения на иностранные решения в критических системах. В рамках импортоопережения появились отечественные решения: например, Platform V Corax. Это программный брокер сообщений — распределённая, отказоустойчивая, реплицированная и легко масштабируемая система потоковой передачи сообщений, рассчитанная на высокую пропускную способность.
Для чего нужен Apache Kafka: четыре главные задачи
Проекты становятся сложнее: необходимо обеспечивать мгновенный отклик, собирать и обрабатывать данные из сотен различных источников. Это могут быть:
- БД;
- датчики;
- смартфоны и планшеты;
- сервисы в облаке.
Нужно, чтобы сервисы работали в режиме постоянной доступности, но это не всегда возможно: случаются задержки из-за синхронизации по расписанию один раз в сутки, несогласованность данных и другие проблемы.
К примеру, система управления заказами (OMS) не знает о наличии товара на складе в реальном времени, и из-за этого происходит «отрицательная продажа». Покупатель думает, что приобрёл товар, а на самом деле продукции давно нет. Менеджер вынужден связываться с клиентом, объяснять причину проблемы, оформлять возврат. Это дополнительные затраты для бизнеса.
Потоковая передача событий (event streaming, стриминг) позволяет решить подобные проблемы несогласованности. Она обеспечивает передачу данных в реальном времени и помогает приложениям реагировать на изменения, а не ждать пакетной обработки. Механизм сравнивают с нервной системой человека. Эта технология обеспечивает:
- сбор информации в режиме реального времени из разных источников в виде потоков событий;
- хранение потоков для извлечения в будущем;
- обработку, манипулирование, реагирование в реальном времени или в ретроспективе;
- маршрутизацию потоков событий.
В конечном счёте это важно, чтобы нужная информация была доступной в нужном месте в нужное время.
Apache Kafka — платформа потоковой обработки данных. Она позволяет решать важные для бизнеса задачи. Сферы применения:
- банки и финансы: обработка транзакций в режиме реального времени;
- логистика и транспорт: отслеживание и мониторинг грузовиков, пассажирского транспорта, перемещения грузов;
- ретейл: сбор заказов, синхронизация со складами, взаимодействие с клиентами;
- здравоохранение: отслеживание состояния пациента, прогнозы состояния, лечение в чрезвычайных ситуациях.
| Задача в бизнесе и разработке | Решение Kafka |
| Разделить сервисы, которые сильно связаны друг с другом | Модель «публикация—подписка», где потребитель и производитель ничего не знают друг о друге, а общаются через события |
| Обеспечить масштабируемость | Отлаженный механизм масштабирования подписчиков |
| Снизить риск потери данных | Хранение сообщений, гарантии доставки: не более одного раза (At‑Most‑Once), не менее одного раза (At‑Least‑Once), точно один раз (Exactly‑Once) |
| Работать с потоками данных | Работа с разными типами потоков: поведение пользователей в сервисах аналитики (клики, просмотры), информация с умных устройств (влажность, температура), журналы (логи приложений), события (транзакции, обновления) и другие |
Инструмент используют для сбора логов сессий, агрегации данных с физических серверов, создания конвейеров для машинного обучения.
Как работает Kafka: базовая архитектура за 5 минут
Основные компоненты архитектуры:
- брокер или группа (если их несколько);
- производитель (издатель сообщений / producer);
- подписчик (потребитель/consumer), когда их несколько — объединяются в группу;
- тема (топик/topic) и ее части (партиции/partition).
Производитель создаёт и отправляет сообщения. Подписчик должен их получить. Kafka использует принцип «публикация—подписка» (publish-subscribe, pub-sub). Издатель и подписчик не зависят друг от друга, ничего не знают друг о друге и общаются через общие события: например, производителю не нужно ждать, пока придёт ответ от подписчика. Это основа событийно-ориентированной архитектуры — Event-Driven Architecture (EDA).
Между издателем и потребителем находится третья сущность — брокер (по аналогии с почтальоном). Это узел/нода/диспетчер, который принимает данные, хранит их, реплицирует и отдаёт по запросу. Как правило, один брокер = один сервер. Они могут объединяться в группы и кластеры.
| Кто может быть производителем (издателем) в Kafka | Кто выступает подписчиком (потребителем) в Kafka |
| Сайты и приложения, устройства умного дома, микросервисы, системы логирования и мониторинга | Системы аналитики и рекомендаций, алгоритмы обучения ML и DL, микросервисы, которые запускают другие процессы |
Чтобы объединить издателей и потребителей, Kafka создаёт топик — виртуальное хранилище сообщений, или журнал записей. В нём находятся сообщения одинакового или похожего содержания, откуда подписчик получает необходимую информацию. Топик можно сравнить с почтовым ящиком, где лежат конверты, открытки, письма. Только в случае с ПО в теме могут находиться события об оплате, уведомления на электронную почту, обновления остатков товара на складе.
Каждый топик
можно разделить на части — партиции. Это позволяет быстрее получать информацию из темы.
Части-партиции в топике
можно сравнить с главами в книге. Они находятся в одной теме, но при
необходимости не нужно листать весь том: достаточно сразу перейти к нужной
главе.

Например, на схеме выше два независимых друг от друга издателя — смартфон и автомобиль — записывают данные в одну из четырёх частей (партиций) топика. Продюсеры отправляют информацию независимо друг от друга и ничего не знают друг о друге.
Принцип работы «публикация—подписка» (publish-subscribe, pub-sub) подразумевает, что:
- Издатель не знает, кто получит сообщения. Он просто публикует их в определённый топик.
- Потребители, которые подписаны на тему, получают сообщения.
На основе этой логики выстраивают более сложную логику с распределением задач между подписчиками. В один топик публикуют сообщения для разных подписчиков. Каждый «видит» своё по уникальному маркеру и забирает для исполнения.
Сообщений могут быть миллионы: как Kafka обеспечивает их обработку
Сообщения попадают в очередь, из которой получатель считывает информацию в порядке их поступления. Структура платформы обеспечивает обработку миллионов сообщений в секунду.
Данных много: как Kafka следит за всеми и гарантирует, что ничего не потеряется
Чем больше данных, тем выше риск потери. Брокер сообщений дублирует разделы: создаёт одного «лидера» (leader) и несколько «подчинённых» (follower, набор in‑sync replicas, ISR). Лидер работает с производителями и подписчиками, а подчинённые используются как реплики: сохраняют всё, что находится на лидере. Когда лидер выходит из строя, его место занимает одна из реплик. Система не ломается, а продолжает работать.
Ключевые компоненты Kafka, которые нужно знать
Выше мы разобрали архитектуру и принципы функционирования программного обеспечения. Рассмотрим, какие ещё элементы используются и для каких целей:
- структура данных;
- хранение и адресация;
- кластер и репликация;
- программные интерфейсы API.
Модель и структура данных
Сообщение (event, или message) в Kafka имеет определённую структуру:
- ключ (key);
- значение (value);
- метку времени (timestamp).
Опционально могут использоваться метаданные (хедеры). Пример выглядит таким образом:
"key": "SberTech_user", "value": "Registration_on_site", "timestamp": "Jun. 2 5, 2 026 at 2:0 6 p.m."
Сообщения организованы и хранятся в топике. Каждая тема включает одну и более частей (партиций), которые распределены между брокерами внутри одного кластера. Это обеспечивает горизонтальное масштабирование кластера: клиенты могут писать и читать сообщения с нескольких брокеров одновременно.

Когда новое сообщение добавляется в топик, то оно записывается в одну из частей (партиций). Сообщения с одинаковыми ключами попадают в одну и ту же партицию. Этот механизм обеспечивает очерёдность.
Чтобы обеспечить сохранность, используются репликации. Каждую часть-партицию можно реплицировать n-ое количество раз (n — это фактор репликации, replication factor).
Хранение и адресация
Часть-партиция — это реплицируемый лог, который хранится на диске. Новое сообщение, присланное от продюсера, сохраняется в «голову» лога. Оно имеет уникальный порядковый номер — офсет (offset).
Офсет можно сравнить с закладкой в книге: каждый подписчик запоминает, на каком месте остановился. В случае перезапуска потребитель вернётся в то место, где прервался.
Преимущество Apache Kafka в сравнении с Redis и другими инструментами — сохранение сообщений. Они не удаляются из лога после прочтения. Потребители могут использовать данные сколько угодно раз, пока сведения доступны у брокера. Время гарантированного хранения выставляют при помощи специальных настроек: иногда это может быть квартал или даже год.

Кластер и репликация
Несколько Kafka-брокеров образуют кластер. Он обеспечивает надёжность и масштабирование. Но за кластером нужно следить: хранить метаданные и конфигурации топиков / частей-партиций, координировать работу, отслеживать доступность.
Это позволяет сделать сервис Zookeeper/KRaft. До версии 4.0 координацию метаданных выполнял ZooKeeper, затем появился встроенный механизм KRaft (Kafka Raft).

За отказоустойчивость отвечает репликация. Она бывает:
- внутрикластерная: нужна для отказоустойчивости, обеспечивает работу в случае выхода из строя одного сервера/брокера;
- межкластерная: необходима для геораспределения и мультирегионального развёртывания, осуществляется с помощью специальных инструментов (MirrorMaker 2 / ММ 2, Cluster Linking, uReplicator, Confluent Replicator).
Программные интерфейсы API
Разработчики предоставляют программные интерфейсы3 на Java и Scala.
- API Producer — отправление потоков данных в топики;
- API Consumer — считывание;
- API Streams — преобразование потоков;
- API Connect — реализация коннекторов;
- API Admin — управление топиками и иными объектами.
Главные преимущества Apache Kafka
Надёжность (отказоустойчивость) за счёт репликации
Если вышел из строя сервер в одном дата-центре, система продолжит работать: будут задействованы реплики в других ДЦ.
Масштабируемость
Количество подписчиков может быть динамическим. Поддерживается возможность «горячего расширения»: в кластеры добавляются новые машины без отключения системы.
Открытость
Решение создано на основе технологий открытого программного обеспечения. Доступны официальная документация, патчи от сторонних разработчиков, возможность самостоятельно адаптировать ПО под нагрузки на проекте.
Работа с большим объёмом данных
В отличие от RabbitMQ и Redis Kafka ориентирован на обработку большого количества данных и их хранение в течение длительного времени.
Интегрируемость
Kafka Connect обеспечивает экспорт и импорт данных из различных систем: хранилища больших данных (HDFS, Cassandra, Amazon S 3), облака (Amazon AWS, Dropbox, iCloud), системы поиска и аналитики (Elasticsearch, ClickHouse), файловые и другие.
Производительность
Процессы генерации и считывания сообщений не связаны друг с другом и не зависят друг от друга. Платформа способна обрабатывать до 1,3 трлн сообщений в сутки и до 40 млн сообщений в секунду в 10 кластерах на трех континентах.
С какими сложностями можно столкнуться
Затраты на инфраструктуру, требовательность к ресурсам
Платформа обеспечивает высокую пропускную способность и низкую задержку, но это стоит ресурсов (в частности, сетевых).
Высоки и затраты на хранение: они зависят от входящего трафика, коэффициента репликации и периода хранения.
Дополнительно могут возникнуть затраты на средства мониторинга, шлюзы NAT, кластеры Kubernetes.
Требования к программистам
Для управления, настройки и масштабирования кластеров нужны администраторы и опытные инженеры.
Сложность изменения сообщений
Apache Kafka подходит для случаев «получил — передал». Если нужно изменить информацию, возникают проблемы с производительностью.
Проблемы импортозамещения в России
Иностранное программное обеспечение и ПО на основе открытых технологий не соответствуют требованиям корпоративных клиентов. Поэтому крупный и средний бизнес, государственные корпорации выбирают отечественные решения. В частности, Platform V Corax.
Аналоги Apache Kafka, альтернативы
Platform V Corax — это инструмент для работы с потоками данных в режиме реального времени с возможностью горизонтального масштабирования. Состоит из программного компонента Corax, в котором есть:
- Apache Kafka для хранения сообщений (обязательный);
- Apache ZooKeeper для синхронизации состояний между брокерами (обязательный);
- Corax Schema Registry для контроля AVRO- и JSON-схем при записи в топики Corax (опциональный);
- Corax UI для администрирования (опциональный).
По данным разработчика Platform V Corax, в внутренних тестах скорость операций чтения в Corax при использовании шифрования выше в 1,5 раза по сравнению с Apache Kafka4 . На такое же значение можно снизить нагрузку на процессор.
| Критерий сравнения | Platform V Corax | Apache Kafka |
| Российский реестр программного обеспечения | ✓ | — |
| Прикладные интерфейсы Kafka Connect API | ✓ | ✓ |
| Библиотека для стриминговых приложений Kafka Stream API | ✓ | ✓ |
| Центральный реестр схем данных Schema Registry из коробки | ✓ | — |
| Визуальная утилита для управления и администрирования, доступная из коробки | ✓ | — |
| Автоматическая ребалансировка Auto Data Balancer | ✓ | — |
| Шифрование E2E encryption | ✓ | — |
| Доработки функциональности под запрос клиента | ✓ | — |
| Системы мониторинга | ✓ | — |
| Скрипты развёртывания из коробки Ansible role | ✓ | — |
| Функциональность для безопасности (разделение ролей, защита от привилегированного пользователя) | ✓ | — |
Доступны и другие продукты: веб- и обратный прокси-сервер Platform V SynGX, ПО для оркестрации микросервисов Platform V Synapse Service Mesh, ИТ-решение для потоковой обработки событий Platform V Synapse EDA.
Заключение: стоит ли изучать Apache Kafka
Apache Kafka — инструмент на основе открытого программного обеспечения, который требует настройки мониторинга и репликации. При всех плюсах платформы стоит учитывать недостатки: совокупная стоимость владения, ограничения безопасности и функциональности, сложности использования в российских сервисах с высокими нагрузками. Целесообразно рассмотреть отечественные альтернативы, с регистрацией в РРПО и успешным опытом эксплуатации.
Platform V Corax — это более 550 внедрений, опыт использования в Сбере, три уровня технической поддержки, работа с нагрузками сложных корпоративных систем.
