Yandex ga ut kildekoden til Userver, et rammeverk for å lage apper i C++

Yandex har publisert kildekoden av rammen brukervisning, som lar deg lage høyt belastede C++-applikasjoner som fungerer i asynkron modus. Rammen har blitt testet på Yandex-nivåopplastinger og brukes i tjenester som Yandex Go, Lavka, Delivery, Market og fintech-prosjekter.

brukervisning den er best egnet for å utvikle applikasjoner med en mikrotjenestearkitektur. I utgangspunktet merketeller ble utviklet for Yandex Taxi, med hans hjelp endret teamet seg fra en monolitisk applikasjon til en arkitektur som lar deg utvikle separate uavhengige komponenter (mikrotjenester) og bruke dem i forskjellige applikasjoner.

I dag kunngjør vi utgivelsen av brukerrammeverket for åpen kildekode for å bygge høybelastningsapplikasjoner. For oss er dette en viktig måte å dele erfaringen med å utvikle mikrotjenester som vi har samlet. Her er en lenke til et GitHub-depot med kildekode, dokumentasjon, eksempler, en mal for å lage dine egne tjenester (med CI-konfigurert, bygge- og testmiljø), og en dynamisk konfigurasjonstjeneste. Alt dette er utgitt under Apache 2.0-lisensen.

Mikrotjenester er autonome, så en applikasjon basert på en slik arkitektur er enkel å oppdatere og legge til nye funksjoner til den. Derfor kan mikrotjenesten for å finne en sjåfør for taxibestillinger brukes til en lignende oppgave, for eksempel å finne en kurer for å oppfylle Yandex-leveringsordrer. Det samme kan gjøres med beregning av ankomsttiden til sjåføren eller budet og mange andre oppgaver.

Rammeverket ble opprinnelig laget med vekt på pålitelighet og bekvemmelighet, og inni den gir den alt du trenger for utvikling, diagnostikk, overvåking, feilsøking og eksperimentering. For eksempel, userver foreslår hvordan du fikser feil på byggestadiet, vet hvordan du jobber med forskjellige databaser, endrer parametere i farten, etc.

Angående sammensetningen er det nevnt at drivere for asynkront arbeid med DBMS er inkludert (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klienter og servere som fungerer asynkront for ulike protokoller (HTTP, HTTPS, GRPC, TCP, UDP, TLS), lavnivå-primitiver for å administrere synkronisering og tilgang til systemfunksjoner samt komponenter på høyt nivå for å jobbe med hurtigbuffer, oppgaver, distribuerte låser, sporing, beregninger, statistikk og data i JSON/YAML/BSON-formater, samt støtte for endring av tjenestekonfigurasjonen på farten, uten å stoppe den.

Når det gjelder ulempene av monolitisk arkitektur er følgende nevnt:

  • Konsolidering av all kode i en monolitt. Med en stor kodebase kan bygging og testing ta timer, og utrulling kan ta en hel dag.
  • Nært samspill mellom ulike deler av koden. Du må bruke mye krefter på kodegjennomganger slik at grensesnittene til de ulike delene av monolitten ikke blir et rot.
  • Skjørhet. En endring i en modul kan bryte en annen modul.
  • Uklare ansvarsområder. Under utviklingsprosessen generaliserer mange deler av koden, begynner å bli brukt av forskjellige team, og dette er bra. Men som et resultat er det ikke klart hvem som er ansvarlig for den resulterende modulen: de første forfatterne; de som gjorde flest redigeringer; eller de som mest aktivt bruker modulen i koden.

Tidligere har Yandex overført sine andre nøkkelteknologier i 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.

Endelig for de som er interessert i å vite mer om detVær oppmerksom på at Userver for øyeblikket støttes for Ubuntu, Debian, Fedora, Arch, Gentoo, macOS-systemer, x86, x86_64, AArch64, Arm-arkitekturer, GCC 8+ og Clang 9+ kompilatorer, C++17 standarder, C+ +20, C ++23.

Brukerkode er skrevet i C++ og Det er åpent under Apache 2.0-lisensen og kan konsulteres fra følgende lenke.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.