Yandex hat den Code für das Userver-Framework zum Erstellen von Hochlastanwendungen geöffnet

Yandex hat den Quellcode des Userver-Frameworks veröffentlicht, mit dem Sie Hochlastanwendungen in C++ erstellen können, die im asynchronen Modus arbeiten. Das Framework wurde unter Lasten auf Yandex-Niveau getestet und wird in Diensten wie Yandex Go, Lavka, Delivery, Market und Fintech-Projekten verwendet. Der Code des Benutzers ist in C++ geschrieben und steht unter der Apache 2.0-Lizenz als Open Source.

Userver eignet sich am besten für die Entwicklung von Anwendungen mit Microservice-Architektur. Ursprünglich wurde das Framework für Yandex Taxi entwickelt. Mit seiner Hilfe wechselte das Team von einer monolithischen Anwendung zu einer Architektur, die es ermöglicht, separate unabhängige Komponenten (Microservices) zu entwickeln und diese in verschiedenen Anwendungen zu verwenden. Microservices sind autonom, sodass eine Anwendung, die auf einer ähnlichen Architektur basiert, leicht aktualisiert und um neue Funktionen erweitert werden kann. Daher kann der Mikroservice zum Finden eines Fahrers für Taxibestellungen für eine ähnliche Aufgabe verwendet werden – zum Beispiel für die Suche nach einem Kurier, der Yandex-Lieferaufträge erfüllt. Dasselbe kann mit der Berechnung der Ankunftszeit eines Fahrers oder Kuriers und vielen anderen Aufgaben durchgeführt werden.

Das Framework wurde ursprünglich mit dem Schwerpunkt auf Zuverlässigkeit und Komfort erstellt und enthält alles, was für Entwicklung, Diagnose, Überwachung, Debugging und Experimente erforderlich ist. Der Benutzer schlägt beispielsweise vor, wie Fehler in der Kompilierungsphase behoben werden können, kann mit verschiedenen Datenbanken arbeiten, Parameter im Handumdrehen ändern und so weiter. Erklärte Unterstützung für Ubuntu, Debian, Fedora, Arch, Gentoo, macOS-Systeme, x86, x86_64, AArch64, Arm-Architekturen, GCC 8+ und Clang 9+ Compiler, C++17, C++20, C++23-Standards.

Die Zusammensetzung umfasst Treiber für die asynchrone Arbeit mit DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynchron arbeitende Clients und Server für verschiedene Protokolle (HTTP, HTTPS, GRPC, TCP, UDP, TLS) sowie Low-Level-Primitive für die Synchronisationsverwaltung und Zugriff auf die Funktionen des Betriebssystems sowie auf High-Level-Komponenten für die Arbeit mit Cache, Aufgaben, verteilten Sperren, Ablaufverfolgung, Metriken, Statistiken und Daten in den Formaten JSON/YAML/BSON. Es unterstützt das Ändern der Dienstkonfiguration im laufenden Betrieb, ohne sie anzuhalten.

Zuvor hat Yandex seine anderen Schlüsseltechnologien in Form offener Projekte übertragen – zum Beispiel das verteilte Datenbankverwaltungssystem YDB, das Millionen von Anfragen pro Sekunde verarbeiten kann, sowie die CatBoost-Bibliothek für maschinelles Lernen, die Yandex in der Suche und anderen verwendet Dienstleistungen.

Source: opennet.ru

Kommentar hinzufügen