BullMQ теперь есть нативно для Rust.
Одна из самых популярных Redis-очередей для фоновых задач получила стабильный Rust-релиз:
Это нормальная Rust-реализация
В v1.0.0 уже есть почти всё, что нужно для production-очередей:
* delayed и prioritized jobs
* deduplication
* retries и backoff
* rate limits
* stalled-job detection
* dependent job trees через FlowProducer
* cron и interval recurring jobs
* QueueEvents для наблюдения за жизненным циклом задач
Новая версия использует те же Lua-скрипты, что уже годами крутятся в Node.js, Python, PHP и Elixir-реализациях.
Это значит, что Rust-сервис может положить job в очередь, а Node.js worker её обработает. Или наоборот. Без миграции, sidecar’ов и adapter layer.
По первым бенчмаркам Rust уже немного быстрее Node.js на последовательной и bulk-записи задач, а на high-concurrency processing идёт примерно вровень.
https://bullmq.io/news/260712/rust-release
#RustLang #Redis #BullMQ #Tokio
Одна из самых популярных Redis-очередей для фоновых задач получила стабильный Rust-релиз:
cargo add bullmq-official
Это нормальная Rust-реализация
async/await и Tokio: привычный Result для ошибок, безопасное шаринг-поведение между tasks и API, который ощущается как Rust, а не как порт чужой библиотеки.В v1.0.0 уже есть почти всё, что нужно для production-очередей:
* delayed и prioritized jobs
* deduplication
* retries и backoff
* rate limits
* stalled-job detection
* dependent job trees через FlowProducer
* cron и interval recurring jobs
* QueueEvents для наблюдения за жизненным циклом задач
Новая версия использует те же Lua-скрипты, что уже годами крутятся в Node.js, Python, PHP и Elixir-реализациях.
Это значит, что Rust-сервис может положить job в очередь, а Node.js worker её обработает. Или наоборот. Без миграции, sidecar’ов и adapter layer.
По первым бенчмаркам Rust уже немного быстрее Node.js на последовательной и bulk-записи задач, а на high-concurrency processing идёт примерно вровень.
https://bullmq.io/news/260712/rust-release
#RustLang #Redis #BullMQ #Tokio
🔥19👍6👏6❤3
Topcoat: команда Tokio представила «Rails для Rust» 🦀
Topcoat - экспериментальный fullstack-фреймворк с готовой маршрутизацией, серверным рендерингом, компонентами и сборкой ассетов.
Главная идея — реактивность без отдельного JavaScript-кода и WASM. Вы пишете обычное типизированное Rust-выражение:
При первом рендере оно выполняется на сервере, а затем Topcoat переводит его в JavaScript, чтобы интерфейс мгновенно обновлялся в браузере.
Что уже есть:
- асинхронные серверные компоненты с прямым доступом к базе;
-
- маршруты, автоматически определяемые по структуре модулей;
- редактируемые UI-компоненты на Tailwind в духе shadcn/ui;
- встроенная сборка ассетов;
- интеграции с Tailwind и htmx;
- серверные функции и частичное обновление HTML.
Отдельный API-слой во многих сценариях не требуется: компонент может получить данные и сразу отрисовать страницу.
Проект пока находится на ранней экспериментальной стадии, поэтому возможны серьёзные изменения API. В планах — аутентификация, фоновые задачи, WebSocket, потоковый SSR и клиентская навигация.
https://github.com/tokio-rs/topcoat
#rust #rustlang #webdev #fullstack #tokio #opensource
Topcoat - экспериментальный fullstack-фреймворк с готовой маршрутизацией, серверным рендерингом, компонентами и сборкой ассетов.
Главная идея — реактивность без отдельного JavaScript-кода и WASM. Вы пишете обычное типизированное Rust-выражение:
<button @click=$(|_e| open.set(!open.get()))>
"Что такое Topcoat?"
</button>
При первом рендере оно выполняется на сервере, а затем Topcoat переводит его в JavaScript, чтобы интерфейс мгновенно обновлялся в браузере.
Что уже есть:
- асинхронные серверные компоненты с прямым доступом к базе;
-
view!`-шаблоны с обычными `if и for из Rust;- маршруты, автоматически определяемые по структуре модулей;
- редактируемые UI-компоненты на Tailwind в духе shadcn/ui;
- встроенная сборка ассетов;
- интеграции с Tailwind и htmx;
- серверные функции и частичное обновление HTML.
Отдельный API-слой во многих сценариях не требуется: компонент может получить данные и сразу отрисовать страницу.
Проект пока находится на ранней экспериментальной стадии, поэтому возможны серьёзные изменения API. В планах — аутентификация, фоновые задачи, WebSocket, потоковый SSR и клиентская навигация.
https://github.com/tokio-rs/topcoat
#rust #rustlang #webdev #fullstack #tokio #opensource
👍41❤16🤯11😁2🥴2🗿2💊2🔥1
🔥 Одна строка в конфиге ускорила production-ответ с 126–230 мс до менее чем 9 мс
Paweł Urbanek собрал очень практичный гайд по профилированию Rust, где оптимизации идут не по принципу «что интереснее», а по реальной отдаче.
Из кейсов:
Три последовательных HTTP-вызова →
Неправильно настроенный Brotli в
Ещё жёстче кейс с
И отдельная классика Tokio: unbounded channel молча накопил 73 сообщения, потому что consumer не успевал. Никакой ошибки, просто медленное движение к OOM.
Полезный порядок из гайда:
сначала SQL и HTTP, потом locks и channels, и только после этого CPU profiling.
Потому что один лишний поход в базу обычно стоит дороже, чем сотни мелких оптимизаций внутри hot loop.
🔗 https://hotpath.rs/blog/profiling-rust-guide
#Rust #Performance #Profiling #Tokio #Backend
Paweł Urbanek собрал очень практичный гайд по профилированию Rust, где оптимизации идут не по принципу «что интереснее», а по реальной отдаче.
Из кейсов:
N+1 SQL → 21 запрос превратили в один JOIN, функция ускорилась со 104 до 70 мкс.Три последовательных HTTP-вызова →
tokio::try_join!, итоговое время почти вдвое меньше.Неправильно настроенный Brotli в
maplibre/martin → скорость была всего 27,9 KB/s. Одна правка конфига дала примерно 57x ускорение, а latency упала до <9 мс.Ещё жёстче кейс с
write lock, который держали на всём HTTP round trip. После переноса блокировки P95 для читателей рухнул с 1,11 секунды до 9,42 мкс.И отдельная классика Tokio: unbounded channel молча накопил 73 сообщения, потому что consumer не успевал. Никакой ошибки, просто медленное движение к OOM.
Полезный порядок из гайда:
сначала SQL и HTTP, потом locks и channels, и только после этого CPU profiling.
Потому что один лишний поход в базу обычно стоит дороже, чем сотни мелких оптимизаций внутри hot loop.
🔗 https://hotpath.rs/blog/profiling-rust-guide
#Rust #Performance #Profiling #Tokio #Backend
👍23🔥14😁7❤4🤔1