💹 Открываем код YTsaurus Flow
Потоковая обработка информации в реальном времени под высокими нагрузками часто упирается в инфраструктуру. Как правильно партиционировать поток данных? Как гарантировать exactly-once при сбоях оборудования? И как понять, обработали ли мы все данные на тот или иной момент?
Для решения этих задач команды Yandex Infrastructure и Яндекс Рекламы создали YTsaurus Flow — фреймворк потоковой обработки данных с сохранением состояния между событиями. Сегодня мы выложили его исходный код в опенсорс под лицензией Apache® 2.0.
Flow входит в экосистему платформы YTsaurus и использует её хранилище, очереди и механизм транзакций. Движок берёт на себя координацию узлов, управление стейтом и восстановление после падений, позволяя разработчику сосредоточиться на бизнес-логике.
Архитектурные особенности YTsaurus Flow:
🟢 Гарантия exactly-once по умолчанию. Атомарная фиксация состояния, метаданных очередей и данных синхронных приёмников в рамках одной транзакции (эпохи). Для экономии ресурсов гарантию можно явно ослабить до at-least-once или at-most-once
🟢 Защита от дублирования работы. Механизм prerequisite-транзакций не позволяет устаревшему воркеру закоммитить результат, если контроллер уже передал задачу новому узлу
🟢 Нативное C++-ядро и гибкий выбор языков. Бизнес-логику пайплайнов можно писать на C++, Python, Go, Kotlin или Java, а простые графы вычислений описывать на YQL
🟢 Автоматическая адаптация под поток. Движок сам балансирует партиции по машинам и подбирает их количество без ручного тюнинга
В статье на Хабре мы подробно разобрали, как устроен YTsaurus-Flow-пайплайн. А ещё поделились кейсом Яндекс Рекламы: как за счёт перехода на real-time с внедрением YTsaurus Flow удалось практически полностью сократить техническую задержку поставки данных для дообучения рекомендательных моделей.
🔶 Читать статью на Хабре
Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Post #1105
1.49K

- 🔥 16
- 👍 5
- ❤ 3