Что такое YTsaurus Flow?

YTsaurus Flow — это фреймворк для потоковой кросс-ДЦ обработки событий с гарантиями exactly-once в рамках экосистемы YTsaurus с API для C++, Java и Kotlin, Python, Go, а также поддержкой декларативного описания пайплайнов на YQL.

Ближайшими внешними аналогами являются Google Cloud Dataflow и Apache Flink.

Система находится в активной разработке, однако на её основе построили свои продакшн процессы более десяти команд. Система точно умеет:

  • Справляться с нагрузкой свыше 100 ГБ/с или 1 млн событий в секунду.
  • Поддерживать 150+ логических узлов пайплайна.

Контакты

При любых сложностях с YTsaurus Flow создавайте GitHub Issues.

Свойства системы

  • Нативная поддержка многоэтапных пайплайнов. Как следствие — более простой деплой и управление системой.
  • Поддержка вотермарков и таймеров.
  • Exactly-once семантика обработки событий по умолчанию.
  • Характерная задержка обработки событий при стабильной работе: 1с — 10с.
  • Автоматическая балансировка партиций по машинам.
  • Отказоустойчивость: пайплайн переживает выпадение отдельных машин и датацентров.
  • Возможность реализации бизнес-логики на C++, Java и Kotlin, Python, Go и YQL.
  • Поддержка stateful-обработки с персистентным состоянием в динамических таблицах YTsaurus.
  • Поддержка запуска и в YTsaurus.

Выбор языка

Flow поддерживает несколько языков для реализации бизнес-логики:

  • C++ — нативная реализация, максимальная производительность, полный контроль. Рекомендуется для высоконагруженных пайплайнов.
  • Java и Kotlin — работают через механизм компаньонов. Поддерживают Spring Boot. Подходят для команд с JVM-стеком.
  • Python — работает через механизм компаньонов. Самый простой способ создать прототип пайплайна или обрабатывать небольшой поток данных.
  • Go — работает через механизм компаньонов. Один бинарь одновременно запускает пайплайн и работает компаньоном в джобе. Подходит для команд с Go-стеком.
  • YQL — декларативное описание пайплайна в виде SQL-запроса. Минимальный порог входа, не требует написания кода на C++, Java, Kotlin, Go или Python. Находится в активной разработке, ещё не вся запланированная функциональность доступна.

Целевые свойства системы

  • Умное планирование всего пайплайна целиком, с учётом CPU/RAM потребления как отдельных узлов пайплайнов, так и с учётом существования разделяемых между несколькими узлами ресурсов (общие кеши, базы и т. п.).
  • Возможность запуска пайплайнов на кластерах в тысячи нод и более.
  • Минимальные даунтаймы при выпадении нод, ДЦ, кластеров, а также при обновлениях.

См. также

Предыдущая
Следующая