Kino: Ractor-веб-сервер для Ruby 4.0+ с Rust-фронтендом и параллельными воркерами
Kino: A high-performance Ractor web server for Ruby 4.0
Kino — высокопроизводительный Ractor-веб-сервер для Ruby 4.0+, использующий Rust (tokio + hyper) для сетевого ввода-вывода и параллельные Ractor-воркеры для выполнения Rack 3-приложений. По бенчмаркам на 8-ядерном сервере, в Ractor-режиме он обгоняет Puma-кластер на 1,5-2 раза на легких I/O-эндпоинтах и на 34% на CPU-нагрузке, потребляя при этом примерно в 7 раз меньше памяти. Сервер поддерживает graceful drain, респавн упавших воркеров, ограничение очередей с 503-ответами, таймауты, TLS и другие production-функции. Ractor-режим работает только с Ractor-shareable приложениями; для Rails предусмотрен threaded-fallback.
Ractor mode beats the fork cluster on pure CPU by +34%
- ksec
Будет интересно посмотреть, в каком направлении пойдёт Ruby Rails: в сторону ractor или Fiber. Shopify уже тестирует Falcon / Fiber в продакшене.
Примечание: Оказывается, они также работают над Ractor
- flossly
У меня такие тёплые воспоминания о Ruby. Недавно перешёл на Kotlin, и это ощущается как Ruby с типами и Java-интеропом. И Ruby, и Kotlin — объектно-ориентированные в первую очередь, но готовы к функциональному стилю. Оба очень выразительные.
Любопытно, что JVM настолько ушла вперёд, что мой HTTP-сервер реализован «на JVM» (встроенный HTTP-сервер Sun достаточно хорош для продакшена в нашем случае). Тогда как в мире Ruby всегда был (и есть) нативный HTTP-сервер в зависимостях продакшн-приложения.
- baggy_trough
Рад видеть недавний импульс развития Ractor как в Rails, так и в самом Ruby!