Yandex har åpnet koden for userver-rammeverket for å lage høybelastningsapplikasjoner

Yandex har publisert kildekoden til Userver-rammeverket, som lar deg lage høybelastningsapplikasjoner i C++ som fungerer i asynkron modus. Rammeverket har blitt testet under Yandex-nivå og brukes i tjenester som Yandex Go, Lavka, Delivery, Market og fintech-prosjekter. Brukerens kode er skrevet i C++ og er åpen kildekode under Apache 2.0-lisensen.

Userver er best egnet for å utvikle applikasjoner med mikrotjenestearkitektur. Opprinnelig ble rammeverket utviklet for Yandex Taxi, med dens hjelp byttet teamet fra en monolitisk applikasjon til en arkitektur som lar deg utvikle separate uavhengige komponenter (mikrotjenester) og bruke dem i forskjellige applikasjoner. Mikrotjenester er autonome, så en applikasjon basert på en lignende arkitektur er enkel å oppdatere og legge til nye funksjoner til den. Dermed kan mikrotjenesten for å finne en sjåfør for taxibestillinger brukes til en lignende oppgave - for eksempel å finne en kurer for å oppfylle Yandex Delivery-ordrer. Det samme kan gjøres med å beregne ankomsttiden til en sjåfør eller bud og mange andre oppgaver.

Rammeverket ble opprinnelig laget med vekt på pålitelighet og bekvemmelighet, og inne i det er alt nødvendig for utvikling, diagnostikk, overvåking, feilsøking og eksperimenter. For eksempel, userver foreslår hvordan du kan fikse feil på kompileringsstadiet, kan jobbe med forskjellige databaser, endre parametere i farten, og så videre. Erklært støtte for Ubuntu, Debian, Fedora, Arch, Gentoo, macOS-systemer, x86, x86_64, AArch64, Arm-arkitekturer, GCC 8+ og Clang 9+ kompilatorer, C++17, C++20, C++23 standarder.

Sammensetningen inkluderer drivere for asynkront arbeid med DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynkront fungerende klienter og servere for ulike protokoller (HTTP, HTTPS, GRPC, TCP, UDP, TLS), lavnivå-primitiver for synkroniseringsadministrasjon og tilgang til funksjonene til operativsystemet, samt høynivåkomponenter for arbeid med cache, oppgaver, distribuerte låser, sporing, metrikk, statistikk og data i JSON/YAML/BSON-formater. Den støtter endring av tjenestekonfigurasjonen på farten, uten å stoppe den.

Tidligere har Yandex overført sine andre nøkkelteknologier til form av åpne prosjekter - for eksempel det distribuerte databasestyringssystemet YDB, som er i stand til å behandle millioner av forespørsler per sekund, samt CatBoost maskinlæringsbiblioteket, som Yandex bruker i søk og andre tjenester.

Kilde: opennet.ru

Legg til en kommentar