Yandex har öppnat koden för userver-ramverket för att skapa högbelastningsapplikationer

Yandex har publicerat källkoden för Userver-ramverket, som låter dig skapa högbelastningsapplikationer i C++ som fungerar i asynkront läge. Ramverket har testats under belastningar på Yandex-nivå och används i tjänster som Yandex Go, Lavka, Delivery, Market och fintech-projekt. Userverns kod är skriven i C++ och är öppen källkod under Apache 2.0-licensen.

Userver är bäst lämpad för att utveckla applikationer med mikrotjänstarkitektur. Inledningsvis utvecklades ramverket för Yandex Taxi, med dess hjälp bytte teamet från en monolitisk applikation till en arkitektur som låter dig utveckla separata oberoende komponenter (mikrotjänster) och använda dem i olika applikationer. Mikrotjänster är autonoma, så en applikation baserad på en liknande arkitektur är lätt att uppdatera och lägga till nya funktioner till den. Således kan mikrotjänsten för att hitta en chaufför för taxibeställningar användas för en liknande uppgift - till exempel att hitta en kurir för att uppfylla Yandex-leveransordrar. Detsamma kan göras med att beräkna ankomsttiden för en förare eller bud och många andra uppgifter.

Ramverket skapades ursprungligen med betoning på tillförlitlighet och bekvämlighet, och inuti det finns allt som behövs för utveckling, diagnostik, övervakning, felsökning och experiment. Userver föreslår till exempel hur man åtgärdar fel i kompileringsstadiet, kan arbeta med olika databaser, ändra parametrar i farten och så vidare. Deklarerat stöd för Ubuntu, Debian, Fedora, Arch, Gentoo, macOS-system, x86, x86_64, AArch64, Arm-arkitekturer, GCC 8+ och Clang 9+ kompilatorer, C++17, C++20, C++23 standarder.

Sammansättningen innehåller drivrutiner för asynkront arbete med DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynkront arbetande klienter och servrar för olika protokoll (HTTP, HTTPS, GRPC, TCP, UDP, TLS), lågnivåprimitiv för synkroniseringshantering och tillgång till operativsystemets funktioner, såväl som komponenter på hög nivå för att arbeta med cache, uppgifter, distribuerade lås, spårning, mätvärden, statistik och data i JSON/YAML/BSON-format. Det stöder att ändra tjänstekonfigurationen i farten, utan att stoppa den.

Tidigare överförde Yandex sina andra nyckelteknologier till formen av öppna projekt - till exempel det distribuerade databashanteringssystemet YDB, som kan bearbeta miljontals förfrågningar per sekund, samt CatBoost-maskininlärningsbiblioteket, som Yandex använder i Sök och andra tjänster.

Källa: opennet.ru

Lägg en kommentar