Яндекс відкрив код фреймворку 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, яку Яндекс застосовує у пошуку та інших сервісах.

Джерело: opennet.ru

Додати коментар або відгук