Yandex zverejnil zdrojový kód Userver, frameworku na vytváranie aplikácií v C++

Yandex zverejnil zdrojový kód rámu užívateľský pohľad, ktorý vám umožňuje vytvárať vysoko zaťažené aplikácie C++, ktoré pracujú v asynchrónnom režime. Rám bol testovaný na nahrávaniach na úrovni Yandex a používa sa v službách ako Yandex Go, Lavka, Delivery, Market a fintech projekty.

užívateľský pohľad najlepšie sa hodí na vývoj aplikácií s architektúrou mikroslužieb. Spočiatku znalebo bol vyvinutý pre Yandex Taxi, s jeho pomocou sa tím zmenil z monolitickej aplikácie na architektúru, ktorá umožňuje vyvíjať samostatné nezávislé komponenty (mikroslužby) a využívať ich v rôznych aplikáciách.

Dnes oznamujeme vydanie používateľského rámca s otvoreným zdrojovým kódom na vytváranie aplikácií s vysokou záťažou. Pre nás je to dôležitý spôsob zdieľania skúseností s vývojom mikroslužieb, ktoré sme nazbierali. Tu je odkaz na úložisko GitHub so zdrojovým kódom, dokumentáciou, vzorkami, šablónou na vytváranie vlastných služieb (s nakonfigurovaným CI, zostavovacím a testovacím prostredím) a službou dynamickej konfigurácie. Toto všetko je vydané pod licenciou Apache 2.0.

Mikroslužby sú autonómne, takže aplikácia založená na takejto architektúre sa dá ľahko aktualizovať a pridať do nej nové funkcie. Preto je možné mikroslužbu na nájdenie vodiča pre objednávky Taxi použiť na podobnú úlohu, napríklad nájsť kuriéra na splnenie objednávok dodania Yandex. To isté sa dá urobiť s výpočtom času príchodu vodiča alebo kuriéra a mnohými ďalšími úlohami.

Rámec bol pôvodne vytvorený s dôrazom na spoľahlivosť a pohodlie, a vo vnútri poskytuje všetko, čo potrebujete na vývoj, diagnostiku, monitorovanie, ladenie a experimentovanie. Používateľ napríklad navrhuje, ako opraviť chyby vo fáze zostavovania, vie, ako pracovať s rôznymi databázami, meniť parametre za behu atď.

Čo sa týka zloženia, spomína sa, že sú zahrnuté ovládače pre asynchrónnu prácu s DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klienti a servery, ktoré pracujú asynchrónne pre rôzne protokoly (HTTP, HTTPS, GRPC, TCP, UDP, TLS), nízkoúrovňové primitívy na správu synchronizácie a prístupu k funkciám systému, ako aj komponenty na vysokej úrovni na prácu s vyrovnávacou pamäťou, úlohami, distribuovanými zámkami, sledovaním, metrikami, štatistikami a údajmi vo formátoch JSON/YAML/BSON a navyše podporuje zmenu konfigurácie služby za behu bez jej zastavenia.

Čo sa týka nevýhod monolitickej architektúry sa uvádzajú:

  • Konsolidácia celého kódu v rámci monolitu. Vďaka veľkej kódovej základni môže zostavenie a testovanie trvať hodiny a nasadenie môže trvať celý deň.
  • Úzka interakcia rôznych častí kódu. Musíte vynaložiť veľa úsilia na preskúmanie kódu, aby sa rozhrania s rôznymi časťami monolitu nestali neporiadkom.
  • Krehkosť. Zmena v jednom module môže poškodiť iný modul.
  • Nejasné oblasti zodpovednosti. Počas procesu vývoja sa mnohé časti kódu zovšeobecnia, začnú ich používať rôzne tímy, a to je dobré. Ale v dôsledku toho nie je jasné, kto je zodpovedný za výsledný modul: prví autori; tí, ktorí vykonali najviac úprav; alebo tí, ktorí najaktívnejšie využívajú modul v kóde.

Predtým Yandex preniesol svoje ďalšie kľúčové technológie vo forme otvorených projektov, napríklad systém správy distribuovaných databáz YDB, ktorý je schopný spracovať milióny požiadaviek za sekundu, ako aj knižnicu strojového učenia CatBoost, ktorú Yandex používa pri vyhľadávaní a ďalších služby.

Konečne pre tých, ktorí majú záujem dozvedieť sa viacUpozorňujeme, že Userver je v súčasnosti podporovaný pre Ubuntu, Debian, Fedora, Arch, Gentoo, systémy macOS, x86, x86_64, AArch64, architektúry Arm, kompilátory GCC 8+ a Clang 9+, štandardy C++17, C+++20, C ++23.

Používateľský kód je napísaný v C++ a Je to otvorené pod licenciou Apache 2.0 a je možné sa s ním oboznámiť nasledujúci odkaz.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.