A Yandex megnyitotta a felhasználói keretrendszer kódját a nagy terhelésű alkalmazások létrehozásához

A Yandex közzétette a Userver keretrendszer forráskódját, amely lehetővé teszi nagy terhelésű alkalmazások létrehozását C++ nyelven, amelyek aszinkron módban működnek. A keretrendszert Yandex-szintű terhelés alatt tesztelték, és olyan szolgáltatásokban használják, mint a Yandex Go, a Lavka, a Delivery, a Market és a fintech projektek. A felhasználói kód C++ nyelven íródott, és nyílt forráskódú az Apache 2.0 licenc alatt.

A Userver a legalkalmasabb mikroszolgáltatási architektúrájú alkalmazások fejlesztésére. Kezdetben a keretrendszert a Yandex Taxi számára fejlesztették ki, segítségével a csapat monolitikus alkalmazásról olyan architektúrára váltott, amely lehetővé teszi különálló, független komponensek (mikroszolgáltatások) fejlesztését, és azok használatát különböző alkalmazásokban. A mikroszolgáltatások önállóak, így egy hasonló architektúrára épülő alkalmazás könnyen frissíthető és új funkciókkal bővíthető. Így a Taxi megrendelésekhez sofőrt találó mikroszolgáltatás hasonló feladatra is használható - például futár keresése a Yandex Delivery megrendelések teljesítéséhez. Ugyanezt megtehetjük a sofőr vagy futár érkezési idejének kiszámításával és sok más feladattal is.

A keretrendszer kezdetben a megbízhatóságra és a kényelemre helyezve a hangsúlyt, és benne minden megtalálható, ami a fejlesztéshez, diagnosztikához, monitorozáshoz, hibakereséshez és kísérletezéshez szükséges. Például a userver azt javasolja, hogyan javítsa ki a hibákat a fordítási szakaszban, dolgozhat különböző adatbázisokkal, módosíthatja a paramétereket menet közben, és így tovább. Kinyilvánított támogatás az Ubuntu, Debian, Fedora, Arch, Gentoo, macOS rendszerek, x86, x86_64, AArch64, Arm architektúrák, GCC 8+ és Clang 9+ fordítók, C++17, C++20, C++23 szabványokhoz.

A kompozíció tartalmaz illesztőprogramokat a DBMS-sel végzett aszinkron munkához (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), aszinkron módon működő klienseket és szervereket különféle protokollokhoz (HTTP, HTTPS, GRPC, TCP, UDP, TLS), alacsony szintű primitíveket a szinkronizálás kezeléséhez és hozzáférés az operációs rendszer képességeihez, valamint a gyorsítótárral, feladatokkal, elosztott zárakkal, nyomon követéssel, mérőszámokkal, statisztikákkal és adatokkal való munkához JSON/YAML/BSON formátumú magas szintű komponensekhez. Támogatja a szolgáltatás konfigurációjának menet közbeni megváltoztatását, megállás nélkül.

Korábban a Yandex más kulcsfontosságú technológiáit nyitott projektek formájába helyezte át - például az YDB elosztott adatbázis-kezelő rendszert, amely másodpercenként több millió kérést képes feldolgozni, valamint a CatBoost gépi tanulási könyvtárat, amelyet a Yandex használ a keresésben és más alkalmazásokban. szolgáltatások.

Forrás: opennet.ru

Hozzászólás