Kafka с вариантами использования и примерами в реальном времени
Apache Kafka — это распределенная платформа потоковой передачи с открытым исходным кодом, предназначенная для обработки больших объемов данных в режиме реального времени, что делает ее идеальной платформой для создания конвейеров данных в реальном времени, потоковых приложений и архитектур, управляемых событиями.
Случаи использования:
Конвейеры данных в реальном времени
Одним из наиболее распространенных вариантов использования Kafka является создание конвейеров данных в реальном времени. Например, Kafka можно использовать для сбора данных с датчиков, файлов журналов, платформ социальных сетей и других источников и их потоковой передачи в хранилища данных, платформы машинного обучения и другие места назначения.
Системы обмена сообщениями
Kafka также можно использовать в качестве системы обмена сообщениями, обеспечивающей быструю и эффективную доставку сообщений между приложениями и службами. Например, Kafka можно использовать для приложений чата, систем электронной почты и других систем связи в реальном времени.
Потоковая обработка
Поддержка Kafka фреймворков потоковой обработки, таких как Apache Flink и Apache Spark Streaming, позволяет обрабатывать и анализировать данные в режиме реального времени. Например, Kafka можно использовать для создания систем обнаружения мошенничества в реальном времени, механизмов рекомендаций в реальном времени и систем анализа настроений в реальном времени.
Архитектура, управляемая событиями
Поддержка Kafka архитектуры, управляемой событиями, делает его идеальным выбором для создания сложных приложений, управляемых событиями. С Kafka события можно создавать, потреблять и обрабатывать в режиме реального времени. Например, Kafka можно использовать для создания архитектур микросервисов, управляемых событиями, платформ IoT и других систем, управляемых событиями.
Агрегация журналов
Kafka также можно использовать для агрегирования журналов, что позволяет собирать, хранить и анализировать журналы из нескольких источников. Например, Kafka можно использовать для сбора и анализа журналов с веб-серверов, баз данных и других систем.
Ключевые компоненты Кафки

Кафка Тема:
- Тема — это логическое имя потока данных, в котором сообщения публикуются производителями и из которых сообщения потребляются потребителями.
- Тема Kafka разделена на один или несколько разделов, которые хранятся в кластере Kafka.
Брокер — это отдельный экземпляр сервера Kafka, который хранит и управляет одним или несколькими разделами Kafka. Кластер Kafka состоит из одного или нескольких брокеров, которые вместе управляют хранением и обработкой тем Kafka.
Производитель и потребитель:
Производитель выдает данные в топик кафки. Производители могут записывать данные в темы параллельно, а Kafka обеспечивает равномерное распределение данных по разделам.
Потребитель потребляет данные из одной или нескольких тем Kafka. Потребители подписываются на темы и читают данные из разделов. Kafka гарантирует, что только один потребитель из группы получает данные из раздела в любой момент времени.
Разделы:
- Темы Kafka разделены на несколько разделов, которые содержат сообщения в неизменной последовательности (неизменяемой).
- Каждое сообщение в разделе назначается и идентифицируется своим уникальным смещением.
- Тема также может иметь несколько журналов разделов. Это позволяет нескольким потребителям читать из темы параллельно.
Каждому сообщению в разделах назначается уникальный (для каждого раздела) и последовательный идентификатор, называемый смещением.
Группа потребителей:
Группа потребителей — это набор из одного или нескольких потребителей, которые совместно используют данные из тем Kafka.
Репликация:
Репликация — это процесс создания нескольких копий данных. Репликация гарантирует, что в случае сбоя или недоступности брокера (узла) данные, хранящиеся на этом брокере, можно будет восстановить с других брокеров, у которых есть копия тех же данных.
Кафка API
Kafka имеет четыре основных API:
Producer API позволяет приложению публиковать поток записей в одной или нескольких темах Kafka.
Consumer API позволяет приложению подписываться на одну или несколько тем и обрабатывать поток записей.
Streams API позволяет приложению действовать как потоковый процессор, потребляя входной поток из одной или нескольких тем и создавая выходной поток для одной или нескольких выходных тем, эффективно преобразовывая входные потоки в выходные потоки.
API коннектора позволяет создавать и запускать многоразовых производителей или потребителей, которые подключают темы Kafka к существующим приложениям или системам данных. Например, коннектор к реляционной базе данных может фиксировать каждое изменение в таблице.
Примеры из реального мира
- LinkedIn: LinkedIn использует Kafka для обработки и потоковой передачи данных о действиях пользователей в режиме реального времени. Платформа генерирует более 2 триллионов сообщений в день, и Kafka помогает управлять этим огромным объемом данных, обеспечивая обработку и анализ в реальном времени.
- Uber: Uber использует Kafka для управления потоками данных в реальном времени. Kafka помогает Uber управлять потоком данных, генерируемых приложениями компании для водителей и пассажиров, включая данные о местоположении в режиме реального времени, данные о поездках и платежные данные.
- Netflix: Netflix использует Kafka для управления своими конвейерами данных и потоковой передачи данных между своими микросервисами. Kafka помогает Netflix управлять потоком данных между различными службами, гарантируя, что каждая служба имеет доступ к данным, необходимым для обеспечения беспроблемной потоковой передачи для своих пользователей.
- Airbnb: Airbnb использует Kafka для управления своей архитектурой, управляемой событиями. Kafka помогает Airbnb управлять потоком событий, создаваемых ее пользователями и службами, что позволяет предоставлять персонализированные рекомендации и беспроблемный пользовательский интерфейс.
- Twitter: Twitter использует Kafka для управления своими данными социальных сетей в режиме реального времени. Kafka помогает Twitter управлять огромным объемом данных, генерируемых его пользователями, что позволяет ему предоставлять информацию и аналитику в режиме реального времени своим рекламодателям и партнерам.
Доступ на основе ролей Spring Security с Spring Boot
Аутентификация и авторизация Spring Security с помощью JWT
Учебное пособие по весеннему АОП
Учебник по логированию Spring Boot
Централизованная конфигурация в Spring Boot
Пользовательские проверки в Spring Boot
javinpaul Domenico Nicoli Trey Huffine Mehmet Arsl Mehmet Ozkaya The Educative Team