5 достоинств и пара недостатков Apache Kafka Streams API для DevOps-инженера Big Data систем

Kafka, Big Data, Большие данные, архитектура, обработка данных, DevOps

Мы уже рассказывали про Apache Kafka Streams API. В продолжение этой темы, сегодня отметим ключевые преимущества этой технологии, особенно важные для DevOps-инженера и разработчика Big Data систем, а также поговорим про некоторые недостатки и возможные альтернативы Кафка Стримс API.

5 главных достоинств Apache Kafka Streams API

Для DevOps-инженера Big Data систем наиболее значимыми являются следующие преимущества Apache Kafka Streams API [1]:

  1. Мощность
  • масштабируемость, эластичность и отказоустойчивость распределенных приложений;
  • поддержка семантики однократной обработки (exactly-once);
  • обработка с сохранением (statefull) и без сохранения состояний (stateless);
  • обработка событий во времени с использованием окон, объединений, агрегаций;
  • поддержка интерактивных запросов для объединения потоков и баз данных;
  • сочетание максимального контроля и гибкости: наличие декларативного и функционального API высокого уровня (DSL, Domain Specific Language, похожего на разработку в Spark), а также императивного API более низкого уровня абстракции, напоминающий Apache Storm.
  1. Легковесность
  • низкий барьер входа;
  • одинаково высокая приспособленность к задачам малых, средних, крупных и очень масштабных случаев;
  • локальная (внекластерная) обработка;
  • масштабирование от локальной разработки до крупных production-систем;
  • отсутствие внешних зависимостей – не требуется дополнительных сред обработки информации, кроме самой Apache Kafka.
  1. Полная интеграция
  • 100%-ная совместимость с Apache Kafka11.0 и 1.0.0;
  • легкая интеграция со сторонними приложениями и микросервисами;
  • отсутствие строгих правил упаковки, развертывания и мониторинга приложений;
  • универсальность среды исполнения и разработки: локальные, публичные и частные облака, контейнеры и пр.;
  • интеграция с базами данных через CDC-технологию (change data capture), позволяющую отслеживать изменения в базе данных с помощью Kafka Connect.
  1. Real-time
  • задержка обработки всего 1 миллисекунда;
  • единоразовая запись (без разбиения на микропакеты);
  • обработка опоздавших и неупорядоченных данные;
  • высокая производительность.
  1. Безопасность
  • шифрование передаваемых данных;
  • аутентификация и авторизация.
Apache Kafka Streams, Кафка Стримс
Схема работы Apache Kafka Streams

Пара недостатков и альтернативы API-интерфейса Кафка Стримс

Все вышеперечисленные достоинства дополняются следующими минусами [2]:

  • отсутствие автоматизированных средств рефакторинга кода, что увеличивает нагрузку на DevOps-инженера и разработчика, которые хотят писать простые для понимания программы;
  • автоматическая генерация внутренних хранилищ для состояний приложения в топиках Кафка, что может привести к увеличению объема обрабатываемых данных. Однако, при этом stateless-приложения остаются полностью устойчивыми.

Таким образом, несмотря на отмеченные недостатки, API-интерфейс Kafka Streams – это отличный инструмент для создания критически важных приложений для обработки потоков и микросервисов.

Отметим, что альтернативой API-интерфейса Кафка Стримс может выступать KSQL – SQL-подобный интерфейс потоковой обработки данных, хранящихся Kafka. KSQL позволяет реализовать аналитические запросы к данным (фильтрация, преобразование, агрегация, соединение, оконные операции и сессии) в режиме онлайн без использования языков программирования. Однако, при необходимости постоянного выполнения сложных по своей логике и структуре действий с информационными потоками, рационально использовать Apache Kafka Streams API [2]. С помощью каких абстракций Кафка Стримс позволяет распараллелить потоковую обработку Big Data, читайте в нашей следующей статье.

Как Apache Kafka Streams API поможет быстро и эффективно обработать на лету ваши большие данные, узнайте на специализированных курсах для руководителей, архитекторов, инженеров, администраторов, аналитиков Big Data и Data Scientist’ов в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

Источники

  1. https://docs.confluent.io/current/streams/introduction.html#the-kstreams-api-in-a-nutshell
  2. https://medium.com/@stephane.maarek/the-kafka-api-battle-producer-vs-consumer-vs-kafka-connect-vs-kafka-streams-vs-ksql-ef584274c1e

 

Поиск по сайту