Yandex allibero el codi font de Userver, un framework per crear apps a C++

Yandex ha publicat el codi font del marc Userver, que permet crear aplicacions C++ altament carregades que funcionen en mode asíncron. El marc ha estat provat en càrregues de nivell de Yandex i es fa servir en serveis com Yandex Go, Lavka, Delivery, Market i projectes fintech.

Userver és el més adequat per desenvolupar aplicacions amb una arquitectura de microservei. Inicialment, el marco es va desenvolupar per a Yandex Taxi, amb la seva ajuda, l'equip va canviar d'una aplicació monolítica a una arquitectura que permet desenvolupar components independents separats (microserveis) i usar-los en diferents aplicacions.

Avui anunciem el llançament del marc dusuari de codi obert per crear aplicacions dalta càrrega. Per nosaltres, aquesta és una manera important de compartir l'experiència en el desenvolupament de microserveis que hem acumulat. Aquí hi ha un enllaç a un repositori de GitHub amb codi font, documentació, exemples, una plantilla per crear els seus propis serveis (amb CI configurat, entorn de compilació i prova) i un servei de configuració dinàmica. Tot això està publicat sota la llicència Apache 2.0.

Els microserveis són autònoms, de manera que una aplicació basada en una arquitectura d'aquest tipus és fàcil d'actualitzar i afegir noves funcions. Per tant, el microservei per trobar un conductor per a comandes a Taxi es pot utilitzar per a una tasca similar, per exemple, trobar un servei de missatgeria per complir amb les comandes de Yandex Delivery. Es pot fer el mateix amb el càlcul de l'hora d'arribada del conductor o missatger i moltes altres tasques.

El marc es va crear originalment amb èmfasi en la confiança i la conveniència, i al seu interior proporciona tot allò que necessita per al desenvolupament, diagnòstic, monitoratge, depuració i experimentació. Per exemple, userver suggereix com corregir errors a l'etapa de compilació, sap com treballar amb diferents bases de dades, canviar paràmetres sobre la marxa, etc.

Pel que fa a la composició s'esmenta que s'hi inclouen els controladors per al treball asincrònic amb DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), clients i servidors que funcionen asincrònicament per a diversos protocols (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitives de baix nivell per administrar la sincronització i accés a les capacitats del sistema operatiu, així com a components d'alt nivell per treballar amb memòria cau, tasques, bloquejos distribuïts, rastreig, mètriques, estadístiques i dades en formats JSON/YAML/BSON, a més que admet canviar la configuració del servei sobre la marxa, sense aturar-lo.

Pel que fa als desavantatges de l'arquitectura monolítica se'n mencionen els següents:

  • Consolidació de tot el codi dins un monòlit. Amb una gran base de codi, la creació i les proves poden portar hores i la implementació pot portar un dia sencer.
  • Interacció propera de diferents parts del codi. Ha de dedicar molt esforç a les revisions de codi perquè les interfícies de les diferents parts del monòlit no es converteixin en un desastre.
  • fragilitat. Un canvi en un mòdul pot trencar un altre mòdul.
  • Àrees de responsabilitat borroses. Durant el procés de desenvolupament, moltes parts del codi es generalitzen, comencen a ser utilitzades per diferents equips, i això és bo. Però com a resultat, no és clar qui és el responsable del mòdul resultant: els primers autors; aquells que van fer la quantitat més gran d'edicions; o aquells que usen més activament el mòdul al codi.

Anteriorment, Yandex va transferir les altres tecnologies clau a la forma de projectes oberts, per exemple, el sistema de gestió de bases de dades distribuïdes YDB, capaç de processar milions de sol·licituds per segon, així com la biblioteca d'aprenentatge automàtic CatBoost, que Yandex utilitza a la Cerca i altres serveis.

Finalment per als que estiguin interessats en poder conèixer més a l'respecte, han de saber que actualment el suport per a Userver és per a Ubuntu, Debian, Fedora, Arch, Gentoo, sistemes macOS, x86, x86_64, AArch64, arquitectures Arm, compiladors GCC 8+ i Clang 9+, estàndards C++17, C+ +20, C++23.

El codi Userver està escrit a C++ i està obert sota la llicència Apache 2.0 i es pot consultar des del següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.