„Yandex“ atidarė „Userver“ sistemos kodą, skirtą didelės apkrovos programoms kurti

„Yandex“ paskelbė „Userver“ sistemos šaltinio kodą, leidžiantį kurti didelės apkrovos programas C++, veikiančias asinchroniniu režimu. Sistema buvo išbandyta naudojant „Yandex“ lygio apkrovas ir naudojama tokiose paslaugose kaip „Yandex Go“, „Lavka“, „Delivery“, „Market“ ir „fintech“ projektai. Vartotojo kodas parašytas C++ kalba ir yra atviro kodo pagal Apache 2.0 licenciją.

„Userver“ geriausiai tinka kuriant programas su mikro paslaugų architektūra. Iš pradžių sistema buvo sukurta Yandex Taxi, jos pagalba komanda perėjo nuo monolitinės programos prie architektūros, leidžiančios kurti atskirus nepriklausomus komponentus (mikropaslaugas) ir naudoti juos įvairiose programose. Mikropaslaugos yra savarankiškos, todėl panašios architektūros pagrindu sukurtą programą lengva atnaujinti ir pridėti naujų funkcijų. Taigi taksi užsakymų vairuotojo paieškos mikropaslauga gali būti naudojama panašiai užduočiai – pavyzdžiui, surasti kurjerį, kuris įvykdytų „Yandex Delivery“ užsakymus. Tą patį galima padaryti ir apskaičiuojant vairuotojo ar kurjerio atvykimo laiką bei daugybę kitų užduočių.

Iš pradžių sistema buvo sukurta akcentuojant patikimumą ir patogumą, o jos viduje yra viskas, ko reikia plėtrai, diagnostikai, stebėjimui, derinimui ir eksperimentams. Pavyzdžiui, userver siūlo, kaip ištaisyti klaidas kompiliavimo etape, gali dirbti su įvairiomis duomenų bazėmis, keisti parametrus skrydžio metu ir pan. Paskelbtas Ubuntu, Debian, Fedora, Arch, Gentoo, macOS sistemų, x86, x86_64, AArch64, Arm architektūros, GCC 8+ ir Clang 9+ kompiliatorių, C++17, C++20, C++23 standartų palaikymas.

Kompozicijoje yra tvarkyklės asinchroniniam darbui su DBVS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asinchroniškai veikiantys klientai ir įvairių protokolų serveriai (HTTP, HTTPS, GRPC, TCP, UDP, TLS), žemo lygio sinchronizacijos valdymo primityvai. ir prieiga prie operacinės sistemos galimybių, taip pat aukšto lygio komponentų, skirtų darbui su talpykla, užduotimis, paskirstytais užraktais, sekimu, metrika, statistika ir duomenimis JSON/YAML/BSON formatais. Jis palaiko paslaugos konfigūracijos keitimą skrydžio metu, jo nestabdant.

Anksčiau „Yandex“ perkėlė kitas pagrindines technologijas į atvirų projektų formą – pavyzdžiui, paskirstytą duomenų bazių valdymo sistemą YDB, galinčią apdoroti milijonus užklausų per sekundę, taip pat „CatBoost“ mašininio mokymosi biblioteką, kurią „Yandex“ naudoja paieškoje ir kt. paslaugos.

Šaltinis: opennet.ru

Добавить комментарий