Yandex je izdal izvorno kodo Userverja, ogrodja za ustvarjanje aplikacij v C++

Yandex je objavil izvorno kodo okvirja uporabniški pogled, ki omogoča ustvarjanje zelo obremenjenih aplikacij C++, ki delujejo v asinhronem načinu. Okvir je bil preizkušen na nalaganjih na ravni Yandex in se uporablja v storitvah, kot so Yandex Go, Lavka, Delivery, Market in fintech projekti.

uporabniški pogled je najbolj primeren za razvoj aplikacij z arhitekturo mikrostoritev. Sprva oznakaali je bil razvit za Yandex Taxi, je ekipa z njegovo pomočjo prešla iz monolitne aplikacije v arhitekturo, ki omogoča razvoj ločenih neodvisnih komponent (mikrostoritev) in njihovo uporabo v različnih aplikacijah.

Danes objavljamo izdajo odprtokodnega uporabniškega ogrodja za gradnjo zahtevnih aplikacij. Za nas je to pomemben način za izmenjavo izkušenj pri razvoju mikrostoritev, ki smo jih nabrali. Tukaj je povezava do repozitorija GitHub z izvorno kodo, dokumentacijo, vzorci, predlogo za ustvarjanje lastnih storitev (s konfiguriranim CI, okoljem za izdelavo in testiranje) in storitvijo dinamične konfiguracije. Vse to je izdano pod licenco Apache 2.0.

Mikrostoritve so avtonomne, zato je aplikacijo, ki temelji na takšni arhitekturi, enostavno posodobiti in ji dodati nove funkcije. Zato lahko mikrostoritev za iskanje voznika za naročila taksijev uporabite za podobno nalogo, na primer iskanje kurirja za izpolnjevanje naročil Yandex Delivery. Enako je mogoče storiti z izračunom časa prihoda voznika ali kurirja in številnimi drugimi opravili.

Ogrodje je bilo prvotno ustvarjeno s poudarkom na zanesljivosti in priročnosti, znotraj pa nudi vse, kar potrebujete za razvoj, diagnostiko, spremljanje, odpravljanje napak in eksperimentiranje. Uporabnik na primer predlaga, kako popraviti napake v fazi gradnje, ve, kako delati z različnimi bazami podatkov, spreminjati parametre na letenje itd.

Glede sestave je omenjeno, da vključeni so gonilniki za asinhrono delo z DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), odjemalci in strežniki, ki delujejo asinhrono za različne protokole (HTTP, HTTPS, GRPC, TCP, UDP, TLS), nizkonivojski primitivi za upravljanje sinhronizacije in dostopa do sistemskih zmogljivosti ter komponente na visoki ravni za delo s predpomnjenjem, opravili, porazdeljenimi zaklepanji, sledenjem, metrikami, statistiko in podatki v formatih JSON/YAML/BSON, poleg tega pa podpira spreminjanje konfiguracije storitve na letenju, ne da bi jo ustavili.

Kar se tiče slabosti monolitne arhitekture se omenjajo:

  • Konsolidacija celotne kode znotraj monolita. Z veliko bazo kod lahko izgradnja in testiranje trajata ure, uvajanje pa lahko traja cel dan.
  • Tesna interakcija različnih delov kode. V preglede kode morate vložiti veliko truda, da vmesniki do različnih delov monolita ne postanejo zmešnjava.
  • Krhkost. Sprememba enega modula lahko pokvari drug modul.
  • Zamegljena področja odgovornosti. Med razvojnim procesom se številni deli kode posplošijo, začnejo jih uporabljati različne ekipe in to je dobro. Toda posledično ni jasno, kdo je odgovoren za nastali modul: prvi avtorji; tisti, ki so naredili največ popravkov; ali tisti, ki najbolj aktivno uporabljajo modul v kodi.

Pred tem je Yandex prenesel svoje druge ključne tehnologije v obliki odprtih projektov, na primer sistem za upravljanje porazdeljenih baz podatkov YDB, ki lahko obdela milijone zahtev na sekundo, pa tudi knjižnico strojnega učenja CatBoost, ki jo Yandex uporablja v Iskanju in drugih storitve.

Končno za tiste, ki jih zanima več o temUpoštevajte, da je Userver trenutno podprt za sisteme Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, arhitekture Arm, prevajalnike GCC 8+ in Clang 9+, standarde C++17, C+ +20, C ++23.

Uporabniška koda je napisana v C++ in Odprto je pod licenco Apache 2.0 in si ga lahko ogledate na naslednja povezava.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.