Распределенный брокер сообщений стриминговых событий
Высоконадежный, для высоконагруженных систем, горизонтальное масштабированное, оч популярное решение, много интеграций, написан на Java/Scala
Компоненты:
Хранение сообщений
Получаемые брокером сообщения хранятся в лог файлах, папка «./logs», содержит подпапки для топиков, партиций, с соответствующими именами
Набор «рабочих» файлов, в которые пишется в данный момент, называется сегментом, сегмент состоит из трех файлов с разным расширением, со временем они ротируются в зависимости от размера, в именах файлов указаны номера п/п сообщений, с какого номера сообщений пишутся в данный сегмент
Репликация
(replication-factor: count)
Данные реплицируются на брокерах, партициями, каждая партиция находится минимум в двух экземплярах на разных брокерах
Для согласованности дубликатов (т.к. есть запоздания) одна из реплик является основной, остальные подчиненные, основные реплики назначаются сервером-контроллером из кластера
Чтение/запись происходит только с лидер-репликой, затем, синхронно, для нивелирования отставаний, идет запись в ISR реплики («подчиненные+» так сказать), настраивается вручную, они первые кандидаты в лидеры
Программный брокер сообщений, т.е. приложение, которое принимает данные от другой программы, хранит их в своей базе и отдает информацию другой программе.
Kafka с открытым исходным кодом, разработкой занимается Apache Software Foundation
Область применения сфокусирована в отраслях, где требуются сбор, обработка, безопасное хранение и передача больших объемов данных, например такие как онлайн-игры, соц сети, банковские системы, гео системы и т.д.
Архитектурно в процессе работы Kafka участвуют следующие сущности:
Преимущества
Ближайший аналог это RabbitMQ, основные отличия