Yandex a lansat codul sursă al Userver, un cadru pentru crearea de aplicații în C++

Yandex a publicat codul sursă a cadrului vizualizarea utilizatorului, care vă permite să creați aplicații C++ foarte încărcate care funcționează în modul asincron. Rama a fost testat pe încărcări la nivel Yandex și este utilizat în servicii precum Yandex Go, Lavka, Delivery, Market și proiecte fintech.

vizualizarea utilizatorului este cel mai potrivit pentru dezvoltarea aplicațiilor cu o arhitectură de microservicii. Inițial, marcasau a fost dezvoltat pentru Yandex Taxi, cu ajutorul lui, echipa a trecut de la o aplicație monolitică la o arhitectură care vă permite să dezvoltați componente independente separate (microservicii) și să le utilizați în aplicații diferite.

Astăzi anunțăm lansarea cadrului de utilizare open source pentru construirea de aplicații cu încărcare mare. Pentru noi, aceasta este o modalitate importantă de a împărtăși experiența în dezvoltarea microserviciilor pe care le-am acumulat. Iată un link către un depozit GitHub cu cod sursă, documentație, mostre, un șablon pentru crearea propriilor servicii (cu CI configurat, mediu de compilare și testare) și un serviciu de configurare dinamică. Toate acestea sunt lansate sub licența Apache 2.0.

Microserviciile sunt autonome, deci o aplicație bazată pe o astfel de arhitectură este ușor de actualizat și de a adăuga noi caracteristici. Prin urmare, microserviciul pentru găsirea unui șofer pentru comenzile Taxi poate fi utilizat pentru o sarcină similară, de exemplu, găsirea unui curier care să onoreze comenzile Yandex Delivery. Același lucru se poate face cu calcularea orei de sosire a șoferului sau a curierului și multe alte sarcini.

Cadrul a fost creat inițial cu accent pe fiabilitate și comoditate, iar în interior vă oferă tot ce aveți nevoie pentru dezvoltare, diagnosticare, monitorizare, depanare și experimentare. De exemplu, userver sugerează cum să remediați erorile în etapa de construire, știe cum să lucreze cu diferite baze de date, să schimbe parametrii din mers etc.

În ceea ce privește compoziția, se menționează că driverele pentru lucrul asincron cu DBMS sunt incluse (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), clienți și servere care funcționează asincron pentru diferite protocoale (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitive de nivel scăzut pentru a gestiona sincronizarea și accesul la capabilitățile sistemului, precum și componente de nivel înalt pentru a lucra cu cache, sarcini, blocări distribuite, urmărire, metrici, statistici și date în formate JSON/YAML/BSON, precum și pentru a suporta modificarea configurației serviciului din mers, fără a o opri.

Cât despre dezavantaje de arhitectură monolitică se menționează următoarele:

  • Consolidarea întregului cod într-un monolit. Cu o bază mare de coduri, construirea și testarea pot dura ore întregi, iar implementarea poate dura o zi întreagă.
  • Interacțiune strânsă a diferitelor părți ale codului. Trebuie să depui mult efort pe recenzii de cod, astfel încât interfețele cu diferite părți ale monolitului să nu devină o mizerie.
  • Fragilitate. O modificare a unui modul poate distruge un alt modul.
  • Zone de responsabilitate neclare. În timpul procesului de dezvoltare, multe părți ale codului se generalizează, încep să fie folosite de diferite echipe, iar acest lucru este bine. Dar, ca urmare, nu este clar cine este responsabil pentru modulul rezultat: primii autori; cei care au făcut cele mai multe editări; sau cei care folosesc cel mai activ modulul din cod.

Anterior, Yandex și-a transferat celelalte tehnologii cheie sub formă de proiecte deschise, de exemplu, sistemul de gestionare a bazelor de date distribuite YDB, capabil să proceseze milioane de solicitări pe secundă, precum și biblioteca de învățare automată CatBoost, pe care Yandex o folosește în Căutare și alte Servicii.

În cele din urmă pentru cei interesați să afle mai multe despre astaVă rugăm să rețineți că Userver este acceptat în prezent pentru Ubuntu, Debian, Fedora, Arch, Gentoo, sistemele macOS, x86, x86_64, AArch64, arhitecturi Arm, compilatoarele GCC 8+ și Clang 9+, standardele C++17, C+ +20, C ++23.

Codul Userver este scris în C++ și E deschis sub licența Apache 2.0 și poate fi consultat din următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.