Netflix TechBlog | Medium на русском
Подписаться
Как Netflix упростил пакетную обработку данных с помощью Kueue
Netflix переводит свою вычислительную инфраструктуру на модель, основанную на Kubernetes, интегрируя такие компоненты, как Kueue, в свою платформу Titus. Kueue — облачная система очередей заданий — в значительной степени заменила пользовательскую логику собственного решения для пакетной обработки Compute Managed Batch (CMB). Среди причин для этой миграции были устаревание CMB, развитие Kubernetes и растущие сложности с добавлением таких функций, как преемпция, в существующую систему. Kueue был выбран из числа альтернатив благодаря совместимости с существующими профилями планирования Titus, динамике внедрения и встроенной поддержке таких функций, как преемпция.Миграция, получившая название Netflix Batch, была направлена на то, чтобы не оказать никакого влияния на пользователей и не снизить пропускную способность. Процесс включал перенаправление отправленных заданий в ячейки Titus с поддержкой Kueue, при этом распределением заданий занималась федерация Titus. Настройки со стороны операторов были минимальными и сводились в основном к простому переключению в пользовательском интерфейсе для подключения арендаторов к Kueue. Это подключение преобразует существующую иерархию арендаторов и конфигурации мощностей CMB в концепции Kueue: Cohorts, ClusterQueues и LocalQueues.Ключевые извлеченные уроки включают поддержание совместимости API со старой системой для обеспечения плавного пользовательского опыта, а также раннюю миграцию сложных сценариев использования для укрепления доверия. Также было крайне важно провести нагрузочное тестирование Kueue, чтобы убедиться в его способности справляться с высокими требованиями Netflix к пропускной способности, что потребовало корректировки конфигураций по умолчанию. В настоящее время Kueue работает в полном объеме, управляя миллионами пакетных рабочих нагрузок, и обеспечивает расширенные функции справедливого распределения ресурсов и преемственности. Эти усовершенствования позволяют более эффективно использовать зарезервированные ресурсы, сократить количество задержек в выполнении заданий и ускорить обработку критически важных рабочих нагрузок, что значительно повышает средний коэффициент использования ресурсов.