Yandex je odprl kodo za ogrodje uporabniškega strežnika za ustvarjanje visoko obremenjenih aplikacij

Yandex je objavil izvorno kodo ogrodja Userver, ki vam omogoča ustvarjanje visoko obremenjenih aplikacij v C++, ki delujejo v asinhronem načinu. Ogrodje je bilo preizkušeno pod obremenitvami na ravni Yandex in se uporablja v storitvah, kot so Yandex Go, Lavka, Delivery, Market in fintech projekti. Uporabniška koda je napisana v C++ in je licencirana pod licenco Apache 2.0.

Userver je najbolj primeren za razvoj aplikacij z mikrostoritveno arhitekturo. Sprva je bil okvir razvit za Yandex Taxi, z njegovo pomočjo je ekipa prešla iz monolitne aplikacije v arhitekturo, ki vam omogoča razvoj ločenih neodvisnih komponent (mikrostoritev) in njihovo uporabo v različnih aplikacijah. Mikrostoritve so avtonomne, zato je aplikacijo, ki temelji na podobni arhitekturi, enostavno posodobiti in ji dodati nove funkcije. Tako lahko mikrostoritev za iskanje voznika za naročila taksijev uporabimo za podobno nalogo – na primer iskanje kurirja za izpolnjevanje naročil Yandex Delivery. Enako je mogoče storiti z izračunom časa prihoda voznika ali kurirja in številnimi drugimi opravili.

Ogrodje je bilo prvotno ustvarjeno s poudarkom na zanesljivosti in priročnosti, v njem pa je zagotovljeno vse potrebno za razvoj, diagnostiko, spremljanje, odpravljanje napak in poskuse. Uporabnik na primer predlaga, kako odpraviti napake na stopnji prevajanja, lahko dela z različnimi bazami podatkov, spreminja parametre na letenje in tako naprej. Navedena podpora za sisteme Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, arhitekture Arm, prevajalnike GCC 8+ in Clang 9+, standarde C++17, C++20, C++23.

Sestava vključuje gonilnike za asinhrono delo z DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asinhrono delujoče odjemalce in strežnike za različne protokole (HTTP, HTTPS, GRPC, TCP, UDP, TLS), nizkonivojske primitive za upravljanje sinhronizacije in dostop do zmogljivosti operacijskega sistema ter komponent na visoki ravni za delo s predpomnilnikom, opravili, porazdeljenimi zaklepi, sledenjem, metrikami, statistiko in podatki v formatih JSON/YAML/BSON. Podpira sprotno spreminjanje konfiguracije storitve, ne da bi jo ustavili.

Pred tem je Yandex svoje druge ključne tehnologije prenesel v obliko odprtih projektov - na primer sistem za upravljanje porazdeljenih baz podatkov YDB, ki lahko obdela milijone zahtev na sekundo, pa tudi knjižnico strojnega učenja CatBoost, ki jo Yandex uporablja v Iskanju in drugih storitve.

Vir: opennet.ru

Dodaj komentar