Yandex har åbnet koden til userver-rammeværket til at skabe højbelastede applikationer

Yandex har udgivet kildekoden til Userver-rammeværket, som giver dig mulighed for at oprette højbelastningsapplikationer i C++, der fungerer i asynkron tilstand. Rammerne er blevet testet under Yandex-niveau belastninger og bruges i tjenester som Yandex Go, Lavka, Delivery, Market og fintech-projekter. Brugerens kode er skrevet i C++ og er open source under Apache 2.0-licensen.

Userver er bedst egnet til at udvikle applikationer med mikroservicearkitektur. Oprindeligt blev rammen udviklet til Yandex Taxi, med dens hjælp skiftede teamet fra en monolitisk applikation til en arkitektur, der giver dig mulighed for at udvikle separate uafhængige komponenter (mikrotjenester) og bruge dem i forskellige applikationer. Mikrotjenester er autonome, så en applikation baseret på en lignende arkitektur er nem at opdatere og tilføje nye funktioner til den. Således kan mikroservicen til at finde en chauffør til Taxi-ordrer bruges til en lignende opgave - for eksempel at finde en kurer til at opfylde Yandex Delivery-ordrer. Det samme kan gøres med at beregne ankomsttiden for en chauffør eller kurer og mange andre opgaver.

Rammen blev oprindeligt skabt med vægt på pålidelighed og bekvemmelighed, og inde i den er alt nødvendigt til udvikling, diagnostik, overvågning, fejlfinding og eksperimenter. For eksempel, userver foreslår, hvordan man retter fejl på kompileringsstadiet, kan arbejde med forskellige databaser, ændre parametre på farten, og så videre. Erklæret understøttelse af Ubuntu, Debian, Fedora, Arch, Gentoo, macOS-systemer, x86, x86_64, AArch64, Arm-arkitekturer, GCC 8+ og Clang 9+ compilere, C++17, C++20, C++23 standarder.

Sammensætningen omfatter drivere til asynkront arbejde med DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynkront arbejdende klienter og servere til forskellige protokoller (HTTP, HTTPS, GRPC, TCP, UDP, TLS), lavniveau-primitiver til synkroniseringsstyring og adgang til operativsystemets muligheder samt komponenter på højt niveau til at arbejde med cache, opgaver, distribuerede låse, sporing, metrics, statistik og data i JSON/YAML/BSON-formater. Det understøtter ændring af tjenestekonfigurationen på farten uden at stoppe den.

Tidligere har Yandex overført sine andre nøgleteknologier til form af åbne projekter - for eksempel det distribuerede databasestyringssystem YDB, der er i stand til at behandle millioner af anmodninger i sekundet, samt CatBoost maskinlæringsbiblioteket, som Yandex bruger i Search og andre tjenester.

Kilde: opennet.ru

Tilføj en kommentar