Yandex on avanud suure koormusega rakenduste loomiseks mõeldud kasutajaraamistiku koodi

Yandex on avaldanud Userveri raamistiku lähtekoodi, mis võimaldab luua C++-s suure koormusega rakendusi, mis töötavad asünkroonses režiimis. Raamistiku on testitud Yandexi taseme koormuste all ja seda kasutatakse sellistes teenustes nagu Yandex Go, Lavka, Delivery, Market ja fintech projektid. Kasutaja kood on kirjutatud C++ keeles ja on avatud lähtekoodiga Apache 2.0 litsentsi alusel.

Userver sobib kõige paremini mikroteenuse arhitektuuriga rakenduste arendamiseks. Algselt töötati raamistik välja Yandex Taxi jaoks, selle abiga lülitus meeskond monoliitsest rakendusest arhitektuurile, mis võimaldab arendada eraldi sõltumatuid komponente (mikroteenuseid) ja kasutada neid erinevates rakendustes. Mikroteenused on autonoomsed, seega on sarnasel arhitektuuril põhinevat rakendust lihtne värskendada ja sellele uusi funktsioone lisada. Seega saab Takso tellimuste jaoks juhi leidmise mikroteenust kasutada sarnaseks ülesandeks - näiteks kulleri leidmiseks Yandex Delivery tellimuste täitmiseks. Sama saab teha ka autojuhi või kulleri saabumisaja arvutamise ja paljude muude ülesannetega.

Raamistiku loomisel on algselt rõhku pandud töökindlusele ja mugavusele ning selle sees on kõik vajalik arenduseks, diagnostikaks, monitooringuks, silumiseks ja katseteks. Näiteks userver soovitab koostamisjärgus vigu parandada, saab töötada erinevate andmebaasidega, käigu pealt parameetreid muuta jne. Väljakuulutatud tugi Ubuntu, Debiani, Fedora, Arch, Gentoo, macOS-süsteemide, x86, x86_64, AArch64, Arm-arhitektuuride, GCC 8+ ja Clang 9+ kompilaatorite, C++17, C++20, C++23 standardite jaoks.

Kompositsioon sisaldab draivereid asünkroonseks tööks DBMS-iga (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asünkroonselt töötavaid kliente ja servereid erinevate protokollide jaoks (HTTP, HTTPS, GRPC, TCP, UDP, TLS), madala taseme primitiive sünkroonimise haldamiseks ja juurdepääs operatsioonisüsteemi võimalustele, samuti kõrgetasemelistele komponentidele vahemälu, ülesannete, hajutatud lukkude, jälgimise, mõõdikute, statistika ja andmetega töötamiseks JSON/YAML/BSON-vormingus. See toetab teenuse konfiguratsiooni muutmist lennult, ilma seda peatamata.

Varem viis Yandex oma muud võtmetehnoloogiad üle avatud projektide vormis – näiteks hajutatud andmebaasihaldussüsteemi YDB, mis on võimeline töötlema miljoneid päringuid sekundis, samuti CatBoosti masinõppeteeki, mida Yandex kasutab otsingus ja mujal. teenuseid.

Allikas: opennet.ru

Lisa kommentaar