Yandex ha aperto il codice del framework userver per la creazione di applicazioni ad alto carico

Yandex ha pubblicato il codice sorgente del framework Userver, che consente di creare applicazioni ad alto carico in C++ che funzionano in modalità asincrona. Il framework è stato testato con carichi a livello di Yandex e viene utilizzato in servizi come Yandex Go, Lavka, Delivery, Market e progetti fintech. Il codice di Userver è scritto in C++ ed è open source con licenza Apache 2.0.

Userver è più adatto per lo sviluppo di applicazioni con architettura a microservizi. Inizialmente, il framework è stato sviluppato per Yandex Taxi, con il suo aiuto il team è passato da un'applicazione monolitica a un'architettura che consente di sviluppare componenti indipendenti separati (microservizi) e utilizzarli in diverse applicazioni. I microservizi sono autonomi, quindi un'applicazione basata su un'architettura simile è facile da aggiornare e aggiungere nuove funzionalità. Pertanto, il microservizio per trovare un autista per gli ordini di taxi può essere utilizzato per un compito simile, ad esempio trovare un corriere per evadere gli ordini di Yandex Delivery. Lo stesso può essere fatto calcolando l'orario di arrivo di un autista o di un corriere e molte altre attività.

Il framework è stato inizialmente creato con particolare attenzione all'affidabilità e alla praticità e al suo interno viene fornito tutto il necessario per lo sviluppo, la diagnostica, il monitoraggio, il debug e gli esperimenti. Ad esempio, userver suggerisce come correggere gli errori in fase di compilazione, può lavorare con diversi database, modificare i parametri al volo e così via. Supporto dichiarato per Ubuntu, Debian, Fedora, Arch, Gentoo, sistemi macOS, x86, x86_64, AArch64, architetture Arm, compilatori GCC 8+ e Clang 9+, standard C++17, C++20, C++23.

La composizione include driver per il lavoro asincrono con DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), client e server che funzionano in modo asincrono per vari protocolli (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitive di basso livello per la gestione della sincronizzazione e accesso alle funzionalità del sistema operativo, nonché componenti di alto livello per lavorare con cache, attività, blocchi distribuiti, tracciamento, metriche, statistiche e dati nei formati JSON/YAML/BSON. Supporta la modifica al volo della configurazione del servizio, senza interromperlo.

In precedenza, Yandex trasferiva le sue altre tecnologie chiave sotto forma di progetti aperti, ad esempio il sistema di gestione di database distribuito YDB, in grado di elaborare milioni di richieste al secondo, nonché la libreria di apprendimento automatico CatBoost, che Yandex utilizza nella ricerca e in altri Servizi.

Fonte: opennet.ru

Aggiungi un commento