Что такое 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 потребления как отдельных узлов пайплайнов, так и с учётом существования разделяемых между несколькими узлами ресурсов (общие кеши, базы и т. п.).
- Возможность запуска пайплайнов на кластерах в тысячи нод и более.
- Минимальные даунтаймы при выпадении нод, ДЦ, кластеров, а также при обновлениях.
См. также
Предыдущая
Следующая