TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2512 1.76K
Как работает Apache Kafka

Apache Kafka появилась как решение проблемы. Инженеры LinkedIn столкнулись с трудностями при отслеживании метрик веб-сайта, потоков активности и других операционных данных.
Команда инженеров под руководством Джея Крепса (Jay Kreps), Нехи Наркхеде (Neha Narkhede) и Джун Рао (Jun Rao) начала разработку распределённой системы обмена сообщениями по принципу «публикация-подписка», способной обрабатывать потоки данных с высокой пропускной способностью и низкой задержкой.

Эта система в итоге стала Apache Kafka.

Проект был открыт для общественности в начале 2011 года. Название «Kafka» выбрал Джей Крепс. Он назвал систему в честь известного писателя Франца Кафки. 😊
Крепс был поклонником творчества Франца Кафки и посчитал это имя подходящим для системы, работающей с потоками информации.

Система написана на Java и Scala.

Позже они основали компанию Confluent в 2014 году для предоставления коммерческой поддержки и дополнительных инструментов пользователям Kafka.

📌 Давайте разберём базовый принцип работы.

[1] Отправитель отправляет сообщение
* Приложение выступает в роли отправителя, создавая сообщение с данными (полезной нагрузкой) и необязательным ключом.
* Отправитель подключается к брокеру в кластере Kafka и определяет целевую тему.
* Kafka использует партиционер для определения того, в какую партицию темы должно быть доставлено сообщение. Это обеспечивает балансировку нагрузки и параллельную обработку.
* Сообщение доставляется в ведущую реплику выбранной партиции.

[2] Хранение сообщений и репликация
* Ведущая реплика добавляет сообщение в сегмент журнала.
* Сообщение получает уникальный идентификатор (смещение), который определяет его позицию в журнале.
* Ведущая реплика копирует сообщение в последующие реплики для обеспечения отказоустойчивости.

[3] Приёмщик получает сообщения
* Приложение выступает в роли приёмщика, присоединяясь к группе приёмщиков.
* Приёмщики в одной группе совместно используют смещения и координируют потребление.
* Каждый приёмщик получает сообщения из назначенных ему партиций на основе зафиксированного смещения.
* Приёмщик получает пакеты сообщений и обрабатывает их.

[4] Подтверждение потребления
* После завершения обработки приёмщик фиксирует новое смещение.
* Это сообщает Kafka, какие сообщения были успешно потреблены.
* Kafka отслеживает зафиксированные смещения для каждого приёмщика в группе.

[*] Процесс продолжается
* Отправители продолжают отправлять сообщения, а приёмщики продолжают получать и обрабатывать их на основе последних смещений.
* Этот цикл обеспечивает упорядоченную доставку и надёжное потребление даже при сбоях или перезапусках.

Замечания:

👉 Поток сообщений является асинхронным. Отправители не ждут, пока приёмщики обработают сообщения.

👉 Приёмщики могут отставать от отправителей, если обработка идёт медленно.

👉 Kafka предлагает механизмы для обработки сбоев и обеспечения доставки сообщений как минимум один раз или ровно один раз.
  • ❤ 8
  • 👍 6
  • 👏 4
  • ❤‍🔥 1
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →