Yandex a deschis codul pentru framework-ul userver pentru crearea de aplicații cu încărcare mare

Yandex a publicat codul sursă al cadrului Userver, care vă permite să creați aplicații cu încărcare mare în C++ care funcționează în modul asincron. Cadrul a fost testat sub încărcări la nivel Yandex și este utilizat în servicii precum Yandex Go, Lavka, Delivery, Market și proiecte fintech. Codul utilizatorului este scris în C++ și este open source sub licența Apache 2.0.

Userver este cel mai potrivit pentru dezvoltarea de aplicații cu arhitectură de microservicii. Inițial, cadrul a fost dezvoltat pentru Yandex Taxi, cu ajutorul acestuia, 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. Microserviciile sunt autonome, astfel încât o aplicație bazată pe o arhitectură similară este ușor de actualizat și de a adăuga noi caracteristici. Astfel, 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 unui șofer sau curier și multe alte sarcini.

Cadrul a fost creat inițial cu accent pe fiabilitate și comoditate, iar în interiorul acestuia este furnizat tot ceea ce este necesar pentru dezvoltare, diagnosticare, monitorizare, depanare și experimente. De exemplu, userver sugerează cum să remediați erorile în faza de compilare, să lucreze cu diferite baze de date, să modifice parametrii din mers și așa mai departe. Suport declarat pentru Ubuntu, Debian, Fedora, Arch, Gentoo, sisteme macOS, x86, x86_64, AArch64, arhitecturi Arm, compilatoare GCC 8+ și Clang 9+, standardele C++17, C++20, C++23.

Compoziția include drivere pentru lucrul asincron cu DBMS (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 gestionarea sincronizării și acces la capabilitățile sistemului de operare, precum și la componentele de nivel înalt pentru lucrul cu cache, sarcini, blocări distribuite, urmărire, metrici, statistici și date în formate JSON/YAML/BSON. Acceptă schimbarea configurației serviciului din mers, fără a o opri.

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.

Sursa: opennet.ru

Adauga un comentariu