Инструменты пользователя

Инструменты сайта


linux:kafka:old_doc

Общее

Распределенный брокер сообщений стриминговых событий
Высоконадежный, для высоконагруженных систем, горизонтальное масштабированное, оч популярное решение, много интеграций, написан на Java/Scala

:!: Описание

Компоненты:

  • Broker - сервер/node, прием/хранение/передача сообщений, их обычно несколько, объединяются в кластер
  • Zookeeper - рабочая БД для хранения состояния, конфигурации и т.д., самостоятельный инструмент (оч быстрое чтение данных)
  • Message (Record) - передаваемые сообщения
  • Topic/Partition - «ящики» куда складываются данные
  • Producer - отправитель
  • Consumer - получатель
Сообщения Топики

Хранение сообщений
Получаемые брокером сообщения хранятся в лог файлах, папка «./logs», содержит подпапки для топиков, партиций, с соответствующими именами
Набор «рабочих» файлов, в которые пишется в данный момент, называется сегментом, сегмент состоит из трех файлов с разным расширением, со временем они ротируются в зависимости от размера, в именах файлов указаны номера п/п сообщений, с какого номера сообщений пишутся в данный сегмент

Репликация
(replication-factor: count)
Данные реплицируются на брокерах, партициями, каждая партиция находится минимум в двух экземплярах на разных брокерах
Для согласованности дубликатов (т.к. есть запоздания) одна из реплик является основной, остальные подчиненные, основные реплики назначаются сервером-контроллером из кластера
Чтение/запись происходит только с лидер-репликой, затем, синхронно, для нивелирования отставаний, идет запись в ISR реплики («подчиненные+» так сказать), настраивается вручную, они первые кандидаты в лидеры

Producer (отправка)
Consumer (получение)

:!: Еще описание

Программный брокер сообщений, т.е. приложение, которое принимает данные от другой программы, хранит их в своей базе и отдает информацию другой программе.
Kafka с открытым исходным кодом, разработкой занимается Apache Software Foundation

Область применения сфокусирована в отраслях, где требуются сбор, обработка, безопасное хранение и передача больших объемов данных, например такие как онлайн-игры, соц сети, банковские системы, гео системы и т.д.

Архитектурно в процессе работы Kafka участвуют следующие сущности:

  • Продюсер - то что генерирует и посылает данные брокеру
  • Потребитель - тот, кто принимает отправленные продюсером сообщения
  • Сообщения - сами данные
  • Брокер - узел передачи данных
  • Топики (тема) - хранилище сгруппированных сообщений (по разным признакам) из которого потребитель извлекает необходимую ему информацию

Преимущества

  • Возможность долгого хранения данных
  • Бесплатные и открытые исходники
  • Алгоритмы работы заточены на высокую производительность
  • Механизмы защиты данных (?)
  • Возможность работы в режиме кластера, простая масштабируемость (горизонтальная)

Ближайший аналог это RabbitMQ, основные отличия

  • Способы доставки сообщений, Kafka использует pull (получатель сам достает сообщения), а RabbitMQ push (брокер сам отправляет сообщение)
  • Kafka хранит данные до установленного администратором срока, Rabbit удаляет после отправки получателю
  • При высоких нагрузках Rabbit проигрывает в производительности из-за реализованного гибкого управления
linux/kafka/old_doc.txt · Последнее изменение: 2023/02/11 10:09 — admin