Yandex zveřejnil zdrojový kód Userver, frameworku pro vytváření aplikací v C++

Yandex zveřejnil zdrojový kód rámu uživatelské zobrazení, který vám umožňuje vytvářet vysoce zatížené aplikace C++, které pracují v asynchronním režimu. Rám byl testován na nahrávání na úrovni Yandex a používá se ve službách, jako jsou Yandex Go, Lavka, Delivery, Market a fintech projekty.

uživatelské zobrazení nejlépe se hodí pro vývoj aplikací s architekturou mikroslužeb. Zpočátku značkanebo byl vyvinut pro Yandex Taxi, s jeho pomocí se tým změnil z monolitické aplikace na architekturu, která umožňuje vyvíjet samostatné nezávislé komponenty (mikroslužby) a používat je v různých aplikacích.

Dnes oznamujeme vydání uživatelského rámce s otevřeným zdrojovým kódem pro vytváření aplikací s vysokou zátěží. Pro nás je to důležitý způsob, jak sdílet zkušenosti s vývojem mikroslužeb, které jsme nashromáždili. Zde je odkaz na úložiště GitHub se zdrojovým kódem, dokumentací, ukázkami, šablonou pro vytváření vlastních služeb (s konfigurací CI, sestavovacím a testovacím prostředím) a službou dynamické konfigurace. To vše je uvolněno pod licencí Apache 2.0.

Mikroslužby jsou autonomní, takže aplikace založená na takové architektuře se snadno aktualizuje a přidává do ní nové funkce. Proto lze mikroslužbu pro vyhledání řidiče pro objednávky Taxi použít pro podobný úkol, například najít kurýra pro plnění objednávek Yandex Delivery. Totéž lze provést s výpočtem času příjezdu řidiče nebo kurýra a mnoha dalšími úkony.

Rámec byl původně vytvořen s důrazem na spolehlivost a pohodlí, a uvnitř poskytuje vše, co potřebujete pro vývoj, diagnostiku, monitorování, ladění a experimentování. Uživatel například navrhuje, jak opravit chyby ve fázi sestavení, ví, jak pracovat s různými databázemi, měnit parametry za běhu atd.

Ohledně složení je zmíněno, že jsou zahrnuty ovladače pro asynchronní práci s DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klienti a servery, které pracují asynchronně pro různé protokoly (HTTP, HTTPS, GRPC, TCP, UDP, TLS), nízkoúrovňová primitiva pro správu synchronizace a přístupu k funkcím systému a také komponenty na vysoké úrovni pro práci s mezipamětí, úlohami, distribuovanými zámky, trasováním, metrikami, statistikami a daty ve formátech JSON/YAML/BSON a navíc podporuje změnu konfigurace služby za běhu, bez jejího zastavení.

Co se týče nevýhod o monolitické architektuře jsou zmíněny následující:

  • Konsolidace veškerého kódu v rámci monolitu. S velkou kódovou základnou může sestavení a testování trvat hodiny a nasazení může trvat celý den.
  • Úzká interakce různých částí kódu. Musíte vynaložit hodně úsilí na kontroly kódu, aby se rozhraní k různým částem monolitu nestaly nepořádkem.
  • Křehkost. Změna v jednom modulu může přerušit jiný modul.
  • Rozmazané oblasti odpovědnosti. Během procesu vývoje se mnoho částí kódu zobecní, začnou je používat různé týmy, a to je dobře. Ale ve výsledku není jasné, kdo je zodpovědný za výsledný modul: první autoři; ti, kteří provedli nejvíce úprav; nebo ti, kteří nejaktivněji využívají modul v kódu.

Dříve Yandex převedl své další klíčové technologie ve formě otevřených projektů, například systém správy distribuovaných databází YDB, který je schopen zpracovat miliony požadavků za sekundu, a také knihovnu strojového učení CatBoost, kterou Yandex používá ve vyhledávání a další služby.

Konečně pro ty, kteří se o tom chtějí dozvědět víceUpozorňujeme, že Userver je aktuálně podporován pro Ubuntu, Debian, Fedora, Arch, Gentoo, systémy macOS, x86, x86_64, AArch64, architektury Arm, kompilátory GCC 8+ a Clang 9+, standardy C++17, C+++20, C ++23.

Uživatelský kód je napsán v C++ a Je otevřeno pod licencí Apache 2.0 a lze jej konzultovat z následující odkaz.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.