Yandex udgav kildekoden til Userver, en ramme til oprettelse af apps i C++

Yandex har offentliggjort kildekoden af rammen brugervisning, som giver dig mulighed for at oprette højt indlæste C++-applikationer, der fungerer i asynkron tilstand. Rammen er blevet testet på Yandex-niveau uploads og bruges i tjenester som Yandex Go, Lavka, Delivery, Market og fintech-projekter.

brugervisning den er bedst egnet til at udvikle applikationer med en mikroservicearkitektur. I første omgang mærketeller blev udviklet til Yandex Taxi, med hans hjælp ændrede teamet sig 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.

I dag annoncerer vi frigivelsen af ​​open source-brugerrammerne til opbygning af højbelastningsapplikationer. For os er dette en vigtig måde at dele erfaringerne med at udvikle mikrotjenester på, som vi har oparbejdet. Her er et link til et GitHub-lager med kildekode, dokumentation, eksempler, en skabelon til at oprette dine egne tjenester (med CI-konfigureret, bygge- og testmiljø) og en dynamisk konfigurationstjeneste. Alt dette er udgivet under Apache 2.0-licensen.

Mikrotjenester er autonome, så en applikation baseret på en sådan arkitektur er nem at opdatere og tilføje nye funktioner til den. Derfor kan mikroservicen til at finde en chauffør til taxaordrer bruges til en lignende opgave, for eksempel at finde en kurer til at opfylde Yandex Delivery-ordrer. Det samme kan gøres med beregningen af ​​ankomsttiden for chaufføren eller kureren og mange andre opgaver.

Rammerne blev oprindeligt skabt med vægt på pålidelighed og bekvemmelighed, og indeni giver den alt, hvad du har brug for til udvikling, diagnostik, overvågning, fejlfinding og eksperimentering. For eksempel foreslår userver, hvordan man retter fejl på byggestadiet, ved, hvordan man arbejder med forskellige databaser, ændrer parametre i farten osv.

Vedrørende sammensætningen nævnes det, at drivere til asynkront arbejde med DBMS er inkluderet (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klienter og servere, der arbejder asynkront til forskellige protokoller (HTTP, HTTPS, GRPC, TCP, UDP, TLS), lavniveau-primitiver til at styre synkronisering og adgang til systemfunktioner samt komponenter på højt niveau til at arbejde med caching, opgaver, distribuerede låse, sporing, metrics, statistik og data i JSON/YAML/BSON-formater, plus det understøtter ændring af tjenestekonfigurationen på farten uden at stoppe den.

Hvad angår ulemperne af monolitisk arkitektur nævnes følgende:

  • Konsolidering af al kode inden for en monolit. Med en stor kodebase kan opbygning og test tage timer, og implementering kan tage en hel dag.
  • Tæt samspil mellem forskellige dele af koden. Du skal lægge mange kræfter i kodegennemgange, så grænsefladerne til de forskellige dele af monolitten ikke bliver noget rod.
  • Skørhed. En ændring i et modul kan bryde et andet modul.
  • Slørede ansvarsområder. Under udviklingsprocessen generaliseres mange dele af koden, begynder at blive brugt af forskellige teams, og det er godt. Men som et resultat er det ikke klart, hvem der er ansvarlig for det resulterende modul: de første forfattere; dem, der lavede flest redigeringer; eller dem, der mest aktivt bruger modulet i koden.

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

Endelig for dem der er interesserede i at vide mere om detBemærk venligst, at Userver i øjeblikket understøttes til Ubuntu, Debian, Fedora, Arch, Gentoo, macOS-systemer, x86, x86_64, AArch64, Arm-arkitekturer, GCC 8+ og Clang 9+ compilere, C++17 standarder, C++20, C ++23.

Brugerkode er skrevet i C++ og Det er åbent under Apache 2.0-licensen og kan konsulteres fra følgende link.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.