Yandex släppte källkoden för Userver, ett ramverk för att skapa appar i C++

Yandex har publicerat källkoden av ramen användarvy, som låter dig skapa högt laddade C++-applikationer som fungerar i asynkront läge. Ramen har testats på uppladdningar på Yandex-nivå och används i tjänster som Yandex Go, Lavka, Delivery, Market och fintech-projekt.

användarvy den är bäst lämpad för att utveckla applikationer med en mikrotjänstarkitektur. Inledningsvis märketeller utvecklades för Yandex Taxi, med hans hjälp ändrade 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.

Idag tillkännager vi lanseringen av användarramverket med öppen källkod för att bygga högbelastningsapplikationer. För oss är detta ett viktigt sätt att dela erfarenheten av att utveckla mikrotjänster som vi har samlat på oss. Här är en länk till ett GitHub-förråd med källkod, dokumentation, exempel, en mall för att skapa dina egna tjänster (med CI-konfigurerad, bygg- och testmiljö) och en dynamisk konfigurationstjänst. Allt detta släpps under Apache 2.0-licensen.

Mikrotjänster är autonoma, så en applikation baserad på en sådan arkitektur är lätt att uppdatera och lägga till nya funktioner till den. Därför 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 beräkningen av ankomsttiden för föraren eller kuriren och många andra uppgifter.

Ramverket skapades ursprungligen med betoning på tillförlitlighet och bekvämlighet, och inuti den innehåller allt du behöver för utveckling, diagnostik, övervakning, felsökning och experiment. Userver föreslår till exempel hur man åtgärdar fel i byggskedet, vet hur man arbetar med olika databaser, ändrar parametrar i farten, etc.

Angående sammansättningen nämns att drivrutiner för asynkront arbete med DBMS ingår (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klienter och servrar som fungerar asynkront för olika protokoll (HTTP, HTTPS, GRPC, TCP, UDP, TLS), lågnivåprimitiver för att hantera synkronisering och tillgång till systemfunktioner samt komponenter på hög nivå för att arbeta med cachning, uppgifter, distribuerade lås, spårning, mätvärden, statistik och data i JSON/YAML/BSON-format, plus att det stöder att ändra tjänstens konfiguration i farten, utan att stoppa den.

När det gäller nackdelarna av monolitisk arkitektur nämns följande:

  • Konsolidering av all kod inom en monolit. Med en stor kodbas kan det ta timmar att bygga och testa och implementeringen kan ta en hel dag.
  • Nära samspel mellan olika delar av koden. Du måste lägga ner mycket kraft på kodgranskning så att gränssnitten till de olika delarna av monoliten inte blir en enda röra.
  • Bräcklighet. En förändring i en modul kan bryta en annan modul.
  • Suddiga ansvarsområden. Under utvecklingsprocessen generaliserar många delar av koden, börjar användas av olika team, och det är bra. Men som ett resultat är det inte klart vem som är ansvarig för den resulterande modulen: de första författarna; de som gjort flest redigeringar; eller de som mest aktivt använder modulen i koden.

Tidigare överförde Yandex sina andra nyckelteknologier i form av öppna projekt, till exempel YDB:s distribuerade databashanteringssystem, som kan bearbeta miljontals förfrågningar per sekund, samt CatBoost maskininlärningsbibliotek, som Yandex använder i Sök och andra tjänster.

Slutligen för dem som är intresserade av att veta mer om detObservera att Userver för närvarande stöds för Ubuntu, Debian, Fedora, Arch, Gentoo, macOS-system, x86, x86_64, AArch64, Arm-arkitekturer, GCC 8+ och Clang 9+ kompilatorer, C++17 standarder, C+ +20, C ++23.

Användarkod skrivs i C++ och Det är öppet under Apache 2.0-licensen och kan konsulteras från följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.