Никита Рьянов
Компания: Тинькофф
Задачи, связанные с потоковой обработкой данных, встречаются довольно часто. Какими инструментами сейчас их принято решать? В большинстве случаев это будет Apache Spark Streaming или Apache Flink, но всегда ли нужно использовать такие массивные фреймворки для решения не самых сложных задач? Перед нами как раз стояла задача организация мониторинга, которую мы хотели решить, используя что-то легковесное.
Одним из вариантов был Kafka Streams. Зная особенность Kafka Streams в части создания внутренних топиков с состоянием, что приводит к увеличению числа данных, мы, взвесив все «за» и «против» классических решений, решили дать библиотеке шанс. Немного ее доработав, нам удалось сократить число системных топиков до их минимально необходимого количества и обеспечить нужную нам устойчивость и масштабируемость, что в итоге позволило решить поставленную задачу.
Мониторинг — лишь частный пример подобных задач. Однако этот пример показывает, что задачи, в которых есть джоины топиков 1:N, можно успешно решать с помощью Kafka Streams, а не Spark/Flink, при этом обеспечивая простоту и сохраняя эффективность решения.
Будет интересно разработчикам, архитекторам, ETL-разработчикам.
Технологии: Quarkus, Kafka, Kafka Streams, Queryable State store.
Компания: Тинькофф
Компания: Контур