Modal с нуля перестроила основную платформу песочниц, изолированных сред для запуска кода. Новая система рассчитана на миллионы одновременных песочниц и десятки тысяч запусков в секунду.
В демонстрации компания одновременно запустила миллион песочниц менее чем за минуту. Запросы на создание параллельно обрабатывают несколько серверов планирования.
Каждый выбирает рабочий узел по кэшированным в памяти данным и напрямую запрашивает у него запуск с помощью RPC (удалённого вызова процедур). Рабочие узлы периодически публикуют своё состояние, серверы планирования получают его асинхронно, а при создании песочницы хранилища данных не используются.
В тесте медианное время до готовности песочницы было меньше полусекунды, а длительные задержки Modal связывает с конкуренцией в ядре и сети при одновременном запуске множества песочниц и собирается их сократить. Новая система уже доступна в бета-версии и вскоре должна обслуживать всё планирование песочниц Modal.
Проверка утверждений:
- Modal за последние месяцы с нуля перестроила основную платформу песочниц; новая система рассчитана на миллионы одновременных песочниц и десятки тысяч созданий в секунду. (подтверждено самой публикацией: доказательство; «Over the last few months, we’ve rebuilt our core sandbox platform from the ground up for both scale and reliability. On our new system, users can run millions of sandboxes concurrently and create tens of thousands of sandboxes per second.»)
- В демонстрации Modal одновременно запустила миллион песочниц и создала их менее чем за минуту. (подтверждено самой публикацией: доказательство; «As a demonstration of what our platform is capable of, we’ve run a million sandboxes concurrently, creating all 1 million in under a minute.»)
- Запросы на создание параллельно обрабатывает несколько серверов планирования, которые выбирают узел по кэшированным в памяти данным и напрямую запрашивают запуск у рабочего узла по RPC. (подтверждено самой публикацией: доказательство; «Rather than a single, serialized scheduler, we run a fleet of scheduling servers which handle sandbox creation requests concurrently. To handle a creation request, a scheduling server runs a fast scheduling algorithm against in-memory cached data. Once a scheduling server decides which worker to create a sandbox on, it contacts the worker directly via RPC to request that a sandbox is created.»)
- Рабочие узлы периодически публикуют своё состояние, серверы планирования получают его асинхронно, а при создании песочницы хранилища данных не используются. (подтверждено самой публикацией: доказательство; «Workers publish their state periodically into a Redis stream. The scheduling servers consume this state asynchronously and use it to make scheduling decisions. We have no data stores in the critical path of sandbox creation at all.»)
- В тесте медианное время до готовности песочницы было меньше полусекунды; длинные задержки Modal связывает с конкуренцией в ядре и сети и собирается их сократить. (подтверждено самой публикацией: доказательство; «Sandbox start times on our new system (the latency from when the client first tries to create a sandbox, to when the sandbox can run user code) are less than half a second at the median, and remain solid at scale. We attribute much of this tail to kernel and network contention (including the rtnl lock contention mentioned previously) when many sandboxes start simultaneously on the same worker, and we’re working to reduce it.»)
- Новая система уже доступна в бета-версии и вскоре должна обслуживать всё планирование песочниц Modal. (подтверждено самой публикацией: доказательство; «Soon this new system will back all sandbox scheduling at Modal, but it’s already available in Beta.»)
Публикации:
Первоисточники:
оценка 70,5 из 100 · тип: руководство