Яндекс опубликовал исходный код Userver — фреймворка для создания приложений на C++

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

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

Сегодня мы объявляем о выпуске пользовательского фреймворка с открытым исходным кодом для создания высоконагруженных приложений. Для нас это важный способ поделиться накопленным нами опытом разработки микросервисов. Вот ссылка на репозиторий GitHub с исходным кодом, документацией, примерами, шаблоном для создания собственных сервисов (с настроенным CI, средой сборки и тестирования) и сервисом динамической настройки. Все это выпускается под лицензией Apache 2.0.

Микросервисы автономны, поэтому приложение, основанное на такой архитектуре, легко обновлять и добавлять в него новые функции. Поэтому микросервис по поиску водителя для заказов Такси можно использовать для аналогичной задачи, например, найти курьера для выполнения заказов Яндекс Доставки. То же самое можно сделать с расчетом времени прибытия водителя или курьера и многими другими задачами.

Фреймворк изначально создавался с упором на надежность и удобство, а внутри предоставляет все необходимое для разработки, диагностики, мониторинга, отладки и экспериментов. Например, userver подсказывает, как исправить ошибки на этапе сборки, умеет работать с разными базами данных, менять параметры на лету и т. д.

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

Что касается недостатков монолитной архитектуры упоминаются следующие:

  • Консолидация всего кода в монолите. С большой кодовой базой сборка и тестирование могут занять несколько часов, а развертывание — целый день.
  • Тесное взаимодействие разных частей кода. Вы должны потратить много усилий на проверку кода, чтобы интерфейсы к различным частям монолита не превратились в беспорядок.
  • Хрупкость. Изменение в одном модуле может привести к поломке другого модуля.
  • Размытые зоны ответственности. В процессе разработки многие части кода обобщаются, начинают использоваться разными командами, и это хорошо. Но в результате непонятно, кто отвечает за получившийся модуль: первые авторы; те, кто внес больше всего правок; или те, кто наиболее активно использует модуль в коде.

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

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

Код Userver написан на C++ и Открыто под лицензией Apache 2.0, и с ним можно ознакомиться на веб-сайте по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.