Yandex je objavio izvorni kod Uservera, okvira za izradu aplikacija u C++

Yandex je objavio izvorni kod okvira korisnički prikaz, koji vam omogućuje stvaranje visoko opterećenih C++ aplikacija koje rade u asinkronom načinu rada. Okvir testiran je na prijenosima na razini Yandexa a koristi se u servisima kao što su Yandex Go, Lavka, Delivery, Market i fintech projekti.

korisnički prikaz najprikladniji je za razvoj aplikacija s mikroservisnom arhitekturom. U početku, oznakaili je razvijen za Yandex Taxi, uz njegovu pomoć tim je prešao s monolitne aplikacije na arhitekturu koja vam omogućuje razvoj zasebnih neovisnih komponenti (mikroservisa) i njihovu upotrebu u različitim aplikacijama.

Danas najavljujemo izdanje korisničkog okvira otvorenog koda za izgradnju visokoopterećenih aplikacija. Za nas je ovo važan način da podijelimo iskustvo u razvoju mikroservisa koje smo prikupili. Ovdje je poveznica na GitHub repozitorij s izvornim kodom, dokumentacijom, uzorcima, predloškom za kreiranje vlastitih usluga (s CI konfiguriranim okruženjem za izradu i testiranje) i uslugom dinamičke konfiguracije. Sve ovo je objavljeno pod licencom Apache 2.0.

Mikroservisi su autonomni, pa je aplikaciju temeljenu na takvoj arhitekturi lako ažurirati i dodati joj nove značajke. Stoga se mikrousluga za pronalaženje vozača za narudžbe taksija može koristiti za sličan zadatak, na primjer, pronalaženje kurira za ispunjavanje narudžbi Yandex Delivery. Isto se može učiniti s izračunom vremena dolaska vozača ili kurira i mnogim drugim zadacima.

Okvir je izvorno kreiran s naglaskom na pouzdanost i praktičnost, a unutar njega pruža sve što vam je potrebno za razvoj, dijagnostiku, nadzor, otklanjanje pogrešaka i eksperimentiranje. Na primjer, userver sugerira kako ispraviti greške u fazi izgradnje, zna kako raditi s različitim bazama podataka, mijenjati parametre u hodu, itd.

Glede sastava spominje se da uključeni su upravljački programi za asinkroni rad s DBMS-om (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klijenti i poslužitelji koji rade asinkrono za razne protokole (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitive niske razine za upravljanje sinkronizacijom i pristup mogućnostima sustava kao i komponente visoke razine za rad s predmemorijom, zadacima, distribuiranim zaključavanjima, praćenjem, metrikom, statistikom i podacima u JSON/YAML/BSON formatima, plus podržava promjenu konfiguracije usluge u hodu, bez zaustavljanja.

Što se tiče nedostataka od monolitne arhitekture spominju se:

  • Konsolidacija svih kodova unutar monolita. Uz veliku bazu kodova, izgradnja i testiranje mogu trajati satima, a implementacija može trajati cijeli dan.
  • Bliska interakcija različitih dijelova koda. Morate uložiti mnogo truda u pregled koda kako sučelja s različitim dijelovima monolita ne bi postala nered.
  • Krhkost. Promjena u jednom modulu može pokvariti drugi modul.
  • Zamagljena područja odgovornosti. Tijekom procesa razvoja, mnogi dijelovi koda se generaliziraju, počinju ih koristiti različiti timovi, i to je dobro. Ali kao rezultat toga, nije jasno tko je odgovoran za rezultirajući modul: prvi autori; oni koji su napravili najviše izmjena; ili oni koji najaktivnije koriste modul u kodu.

Prethodno je Yandex prenio svoje druge ključne tehnologije u obliku otvorenih projekata, na primjer, YDB distribuirani sustav upravljanja bazom podataka, sposoban obraditi milijune zahtjeva u sekundi, kao i CatBoost knjižnicu strojnog učenja, koju Yandex koristi u Pretraživanju i drugim usluge.

Konačno za one koje zanima više o tomeImajte na umu da je Userver trenutno podržan za Ubuntu, Debian, Fedora, Arch, Gentoo, macOS sustave, x86, x86_64, AArch64, Arm arhitekture, GCC 8+ i Clang 9+ prevoditelje, C++17 standarde, C+ +20, C ++23.

Korisnički kod je napisan u C++ i Otvoreno je pod licencom Apache 2.0 i može se konzultirati s sljedeći link.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.