Yandex ha rilasciato il codice sorgente di Userver, un framework per la creazione di app in C++

Yandex ha pubblicato il codice sorgente del telaio vista utente, che consente di creare applicazioni C++ con carichi elevati che funzionano in modalità asincrona. La cornice è stato testato su caricamenti di livello Yandex ed è utilizzato in servizi come Yandex Go, Lavka, Delivery, Market e progetti fintech.

vista utente è più adatto per lo sviluppo di applicazioni con un'architettura di microservizi. Inizialmente, il marchioo è 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.

Oggi annunciamo il rilascio del framework utente open source per la creazione di applicazioni ad alto carico. Per noi, questo è un modo importante per condividere l'esperienza accumulata nello sviluppo di microservizi. Ecco un collegamento a un repository GitHub con codice sorgente, documentazione, esempi, un modello per creare i propri servizi (con CI configurato, build e ambiente di test) e un servizio di configurazione dinamica. Tutto questo è rilasciato sotto la licenza Apache 2.0.

I microservizi sono autonomi, quindi un'applicazione basata su tale architettura è facile da aggiornare e aggiungere nuove funzionalità ad essa. Pertanto, il microservizio per trovare un autista per gli ordini Taxi può essere utilizzato per un'attività simile, ad esempio trovare un corriere per evadere gli ordini Yandex Delivery. Lo stesso può essere fatto con il calcolo dell'orario di arrivo dell'autista o del corriere e molte altre attività.

Il framework è stato originariamente creato con un'enfasi su affidabilità e convenienza, e al suo interno fornisce tutto il necessario per lo sviluppo, la diagnostica, il monitoraggio, il debug e la sperimentazione. Ad esempio, userver suggerisce come correggere gli errori in fase di compilazione, sa come lavorare con database diversi, modificare i parametri al volo, ecc.

Per quanto riguarda la composizione, si dice che sono inclusi i 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 gestire la sincronizzazione e l'accesso alle funzionalità del sistema, nonché componenti di alto livello per lavorare con memorizzazione nella cache, attività, blocchi distribuiti, traccia, metriche, statistiche e dati nei formati JSON/YAML/BSON, inoltre supporta la modifica della configurazione del servizio al volo, senza interromperlo.

Per quanto riguarda gli svantaggi dell'architettura monolitica si ricordano:

  • Consolidamento di tutto il codice all'interno di un monolito. Con una base di codice ampia, la creazione e il test possono richiedere ore e la distribuzione può richiedere un'intera giornata.
  • Stretta interazione di diverse parti del codice. Devi dedicare molti sforzi alle revisioni del codice in modo che le interfacce con le diverse parti del monolito non diventino un pasticcio.
  • Fragilità. Una modifica in un modulo può interrompere un altro modulo.
  • Aree di responsabilità sfocate. Durante il processo di sviluppo, molte parti del codice si generalizzano, iniziano a essere utilizzate da diversi team e questo è positivo. Ma di conseguenza, non è chiaro chi sia responsabile del modulo risultante: i primi autori; quelli che hanno apportato il maggior numero di modifiche; o coloro che utilizzano più attivamente il modulo nel codice.

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

Infine per chi è interessato a saperne di piùTieni presente che Userver è attualmente supportato per Ubuntu, Debian, Fedora, Arch, Gentoo, sistemi macOS, x86, x86_64, AArch64, Arm architectures, compilatori GCC 8+ e Clang 9+, standard C++17, C+ +20, C ++23.

Il codice Userver è scritto in C++ e È aperto con licenza Apache 2.0 e può essere consultato da seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.