-
Более 80% всех компаний из списка Fortune 100 доверяют и используют Kafka.
Начнем с формального определения. Apache Kafka - это типичный представитель очереди сообщений вида "подписка-публикация".
Теперь с более строгого определения. Apache Kafka — это платформа потоковой передачи данных (событий) с открытым исходным кодом.
Рассмотрим что такое потоковая передача событий. Если проще, это практика сбора данных
в режиме реального времени из всевозможных источников (приложений, баз данных, датчиков) в виде потоков событий со следующими возможностями:
-
Надежное хранение этих потоков событий
-
Манипулирование и обработка событий в режиме реального времени
-
Маршрутизация потоков событий к различным технологиям
Таким образом, потоковая передача событий обеспечивает непрерывный поток и обработку данных,
так что нужная информация оказывается в нужном месте и в нужное время.
-
Для наглядности рассмотрим картинку
-
Приложение 1, 2, ..., 5 посылают сообщения в виде произошедших событий в брокер Kafka (Платформа потоковой передачи событий), kafka их
обрабатывает и распределяет по топикам. БД 1, ..., 4 и две копии приложения 1, подписанные на топики, считывают сообщения к себе и обрабатывают
так как им надо.
-
Приведу типичный пример использования Kafka.
У меня на работе она используется для сбора и передачи данных о работе приложения: логи, данные о нагрузке на приложение, данные об ошибках.
Приложение таких данных генерирует невероятно много и очередь сообщений вида "точка-точка" с таким не справится и тут как раз подходит модель
потоковой передачи данных, которая идеально справляется с такими задачами. Ну и соответственно Kafka, как самая популярная реализация этой модели.
-
Также Kafka, как и большинство других современных очередей сообщений, имеет функции обеспечения безопасности и отказоустойчивости.
Отказоустойчивость - это особенность приложения работать без перебоев как в стандартных условиях,
так и вне стандартных, например, когда кто-то пролил кофе на ваш сервер:)
Измеряется в процентах времени работы от промежутка запуска до выключения.
На практике измеряется не просто в процентах, а в кол-ве девяток в дробной части после 99%. Например,
у меня на работе надежность достигает 4 девяток, то есть 99,9999% времени сервис будет работать стабильно
-
Не забудем также упомянуть, что Kafka это проект с открытым кодом. То есть вы можете редактировать и изменять
его так как вам душе угодно!