Yandex je otvorio kod za korisnički okvir za kreiranje aplikacija visokog opterećenja

Yandex je objavio izvorni kod Userver okvira, koji vam omogućava da kreirate aplikacije sa velikim opterećenjem u C++ koje rade u asinkronom režimu. Okvir je testiran pod opterećenjem na nivou Yandexa i koristi se u uslugama kao što su Yandex Go, Lavka, Delivery, Market i fintech projekti. Korisnički kod je napisan u C++ i otvorenog koda pod licencom Apache 2.0.

Userver je najpogodniji za razvoj aplikacija sa mikroservisnom arhitekturom. U početku je okvir razvijen za Yandex Taxi, uz njegovu pomoć tim je prešao sa monolitne aplikacije na arhitekturu koja vam omogućava da razvijete zasebne nezavisne komponente (mikroservise) i koristite ih u različitim aplikacijama. Mikroservise su autonomne, tako da je aplikaciju zasnovanu na sličnoj arhitekturi lako ažurirati i dodati joj nove funkcije. Dakle, mikroservis za pronalaženje vozača za narudžbe taksija može se koristiti za sličan zadatak - na primjer, pronalaženje kurira koji će ispuniti narudžbe Yandex isporuke. Isto se može uraditi i sa izračunavanjem vremena dolaska vozača ili kurira i mnogim drugim zadacima.

Framework je inicijalno kreiran s naglaskom na pouzdanost i praktičnost, au njemu se nalazi sve što je potrebno za razvoj, dijagnostiku, praćenje, otklanjanje grešaka i eksperimente. Na primjer, userver predlaže kako popraviti greške u fazi kompilacije, može raditi s različitim bazama podataka, mijenjati parametre u hodu i tako dalje. Deklarisana podrška za Ubuntu, Debian, Fedora, Arch, Gentoo, macOS sisteme, x86, x86_64, AArch64, Arm arhitekture, GCC 8+ i Clang 9+ kompajlere, C++17, C++20, C++23 standarde.

Sastav uključuje drajvere za asinhroni rad sa DBMS-om (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asinhrono radne klijente i servere za različite protokole (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitive niskog nivoa za upravljanje sinhronizacijom i pristup mogućnostima operativnog sistema, kao i komponentama visokog nivoa za rad sa keš memorijom, zadacima, distribuiranim zaključavanjem, praćenjem, metrikom, statistikom i podacima u JSON/YAML/BSON formatima. Podržava promjenu konfiguracije usluge u hodu, bez zaustavljanja.

Ranije je Yandex prenio svoje druge ključne tehnologije u obliku otvorenih projekata - na primjer, sistem za upravljanje distribuiranom bazom podataka YDB, sposoban za obradu miliona zahtjeva u sekundi, kao i CatBoost biblioteku mašinskog učenja, koju Yandex koristi u pretraživanju i drugim usluge.

izvor: opennet.ru

Dodajte komentar