Яндекс открыл код фреймворка userver для создания высоконагруженных приложений

Компания Яндекс опубликовала исходный код фреймворка Userver, позволяющего создавать высоконагруженные приложения на языке С++, работающие в асинхронном режиме. Фреймворк протестирован на нагрузках уровня Яндекса и используется в таких сервисах, как Яндекс Go, Лавка, Доставка, Маркет и финтех-проектах. Код Userver написан на языке C++ и открыт под лицензией Apache 2.0.

Userver лучше всего подходит для разработки приложений с микросервисной архитектурой. Изначально фреймворк разрабатывался для Яндекс Такси, с его помощью команда перешла с монолитного приложения на архитектуру, которая позволяет разрабатывать отдельные независимые компоненты (микросервисы) и использовать их в разных приложениях. Микросервисы автономны, поэтому приложение на подобной архитектуре легко обновлять и добавлять в него новые функции. Так, микросервис поиска водителя на заказы в Такси можно использовать для схожей задачи — например поиска курьера для выполнения заказов Яндекс Доставки. То же самое можно проделать и с расчетом времени прибытия водителя или курьера и многими другими задачами.

Фреймворк изначально создавался с акцентом на надёжность и удобство, а внутри него предусмотрено всё необходимое для разработки, диагностики, мониторинга, отладки и экспериментов. Например, userver подсказывает как исправить ошибки ещё на этапе компиляции, умеет работать с разными базами данных, менять параметры на лету и так далее. Заявлена поддержка систем Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, архитектур x86, x86_64, AArch64, Arm, компиляторов GCC 8+ и Clang 9+, стандартов C++17, C++20, C++23.

В состав входят драйверы для асинхронной работы с СУБД (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), асинхронно работающие клиенты и серверы для различных протоколов (HTTP, HTTPS, GRPC, TCP, UDP, TLS), низкоуровневые примитивы для управления синхронизацией и доступа к возможностям операционной системы, а также высокоуровневые компоненты для работы с кэшем, задачами, распределёнными блокировками, трассировкой, метриками, статистикой и данными в форматах JSON/YAML/BSON. Поддерживается изменение конфигурации сервиса на лету, без его остановки.

Ранее Яндекс перевёл в форму открытых проектов и другие свои ключевые технологии — например, распределенную систему управления базами данных YDB, способную обрабатывать миллионы запросов в секунду, а также библиотеку машинного обучения CatBoost, которую Яндекс применяет в Поиске и других сервисах.

1919
3 комментария

Яндекс все?

Ответить

я тут есть какая-то технология для кэшированного доступа к БД? может вон YDB так умеет

Ответить

Звучит хайпово, вот бы еще бенчмарки увидеть

Ответить