Das Unternehmen Yandex hat den Quellcode des Userver-Frameworks veröffentlicht, das die Erstellung hochbelastbarer Anwendungen in C++ ermöglicht, die im asynchronen Modus arbeiten. Das Framework wurde unter Lastbedingungen getestet, die dem Niveau von Yandex entsprechen und wird in Diensten wie Yandex Go, Lavka, Delivery, Market und in Fintech-Projekten eingesetzt. Der Code von Userver ist in C++ geschrieben und steht unter der Apache 2.0 Lizenz.
Userver eignet sich am besten für die Entwicklung von Anwendungen mit Mikrodiensten-Architektur. Ursprünglich wurde das Framework für Yandex Taxi entwickelt, damit das Team von einer monolithischen Anwendung zu einer Architektur wechseln konnte, die es ermöglicht, separate, unabhängige Komponenten (Mikrodienste) zu entwickeln und diese in verschiedenen Anwendungen zu nutzen. Mikrodienste sind autonom, was die Aktualisierung und Erweiterung solcher Anwendungen mit neuen Funktionen erleichtert. So kann beispielsweise der Mikrodienst zur Fahrer-Suche für Aufträge im Taxi auch für eine ähnliche Aufgabe eingesetzt werden — zum Beispiel für die Suche nach einem Kurier für die Lieferung von Yandex. Dasselbe kann auch für die Berechnung der Ankunftszeit von Fahrern oder Kurieren und viele andere Aufgaben gemacht werden.
Das Framework wurde ursprünglich mit einem Fokus auf Zuverlässigkeit und Benutzerfreundlichkeit entwickelt. Es beinhaltet alles Notwendige für die Entwicklung, Diagnose, Überwachung, Fehlersuche und Experimente. Zum Beispiel hilft userver dabei, Fehler bereits während der Kompilierung zu beheben, kann mit verschiedenen Datenbanken arbeiten, Parameter zur Laufzeit ändern und vieles mehr. Unterstützt werden die Systeme Ubuntu, Debian, Fedora, Arch, Gentoo, macOS sowie die Architekturen x86, x86_64, AArch64 und Arm, Compiler wie GCC 8+ und Clang 9+ sowie die Standards C++17, C++20, C++23.
Enthalten sind Treiber für die asynchrone Arbeit mit Datenbanksystemen (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynchron arbeitende Clients und Server für verschiedene Protokolle (HTTP, HTTPS, GRPC, TCP, UDP, TLS), niedere Primitiven zur Verwaltung von Synchronisation und Zugriff auf die Betriebssystemfunktionen sowie hochgradige Komponenten zur Arbeit mit Cache, Aufgaben, verteilten Sperren, Tracing, Metriken, Statistiken und Daten im JSON/YAML/BSON-Format. Die Konfiguration des Dienstes kann zur Laufzeit ohne Stoppen geändert werden.
Zuvor hat Yandex seine Schlüsseltechnologien in Form von Open-Source-Projekten umgewandelt – beispielsweise das verteilte System Datenbankmanagementsystemen YDB, das in der Lage ist, Millionen von Anfragen pro Sekunde zu verarbeiten, sowie die Machine-Learning-Bibliothek CatBoost, die von Yandex in der Suche und anderen Diensten eingesetzt wird.
Quelle: opennet.ru
