Yandex a ouvert le code du framework userver pour créer des applications à forte charge

Yandex a publié le code source du framework Userver, qui vous permet de créer des applications à forte charge en C++ fonctionnant en mode asynchrone. Le framework a été testé sous des charges de niveau Yandex et est utilisé dans des services tels que Yandex Go, Lavka, Delivery, Market et des projets fintech. Le code de Userver est écrit en C++ et est open source sous la licence Apache 2.0.

Userver est le mieux adapté pour développer des applications avec une architecture de microservices. Initialement, le framework a été développé pour Yandex Taxi, avec son aide, l'équipe est passée d'une application monolithique à une architecture qui vous permet de développer des composants indépendants distincts (microservices) et de les utiliser dans différentes applications. Les microservices sont autonomes, donc une application basée sur une architecture similaire est facile à mettre à jour et à y ajouter de nouvelles fonctionnalités. Ainsi, le microservice permettant de trouver un chauffeur pour les commandes de taxi peut être utilisé pour une tâche similaire - par exemple, trouver un coursier pour exécuter les commandes de livraison Yandex. La même chose peut être faite avec le calcul de l’heure d’arrivée d’un chauffeur ou d’un coursier et de nombreuses autres tâches.

Le framework a été initialement créé en mettant l'accent sur la fiabilité et la commodité, et à l'intérieur il contient tout le nécessaire pour le développement, le diagnostic, la surveillance, le débogage et les expériences. Par exemple, l'utilisateur suggère comment corriger les erreurs au stade de la compilation, peut travailler avec différentes bases de données, modifier les paramètres à la volée, etc. Prise en charge déclarée des systèmes Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, Arm, des compilateurs GCC 8+ et Clang 9+, des normes C++17, C++20, C++23.

La composition comprend des pilotes pour le travail asynchrone avec le SGBD (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), des clients et des serveurs fonctionnant de manière asynchrone pour divers protocoles (HTTP, HTTPS, GRPC, TCP, UDP, TLS), des primitives de bas niveau pour la gestion de la synchronisation. et accès aux capacités du système d'exploitation, ainsi qu'à des composants de haut niveau pour travailler avec le cache, les tâches, les verrous distribués, le traçage, les métriques, les statistiques et les données aux formats JSON/YAML/BSON. Il prend en charge la modification de la configuration du service à la volée, sans l'arrêter.

Auparavant, Yandex avait transféré ses autres technologies clés sous forme de projets ouverts - par exemple, le système de gestion de bases de données distribuées YDB, capable de traiter des millions de requêtes par seconde, ainsi que la bibliothèque d'apprentissage automatique CatBoost, que Yandex utilise dans la recherche et d'autres. prestations de service.

Source: opennet.ru

Ajouter un commentaire