Яндэкс адкрыў код фрэймворка userver для стварэння высоканагружаных прыкладанняў

Кампанія Яндэкс апублікавала зыходны код фрэймворка Userver, які дазваляе ствараць высоканагружаныя прыкладанні на мове С++, якія працуюць у асінхронным рэжыме. Фрэймворк пратэставаны на нагрузках узроўню Яндэкса і выкарыстоўваецца ў такіх сэрвісах, як Яндэкс Go, Крама, Дастаўка, Маркет і фінтэх-праектах. Код Userver напісаны на мове C++ і адчынены пад ліцэнзіяй Apache 2.0.

Userver лепш за ўсё падыходзіць для распрацоўкі прыкладанняў з мікрасэрвіснай архітэктурай. Першапачаткова фрэймворк распрацоўваўся для Яндэкс Таксі, з яго дапамогай каманда перайшла з маналітнага дадатку на архітэктуру, якая дазваляе распрацоўваць асобныя незалежныя кампаненты (мікрасэрвісы) і выкарыстоўваць іх у розных дадатках. Мікрасэрвісы аўтаномныя, таму дадатак на падобнай архітэктуры лёгка абнаўляць і дадаваць у яго новыя функцыі. Так, мікрасэрвіс пошуку кіроўцы на замовы ў Таксі можна выкарыстоўваць для падобнай задачы — напрыклад пошуку кур'ера для выканання заказаў Яндэкс Дастаўкі. Тое ж самае можна прарабіць і з разлікам часу прыбыцця вадзіцеля ці кур'ера і многімі іншымі задачамі.

Фрэймворк першапачаткова ствараўся з акцэнтам на надзейнасць і зручнасць, а ўсярэдзіне яго прадугледжана ўсё неабходнае для распрацоўкі, дыягностыкі, маніторынгу, адладкі і эксперыментаў. Напрыклад, userver падказвае як выправіць памылкі яшчэ на этапе кампіляцыі, умее працаваць з рознымі базамі дадзеных, мяняць параметры на лета і гэтак далей. Заяўлена падтрымка сістэм Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, архітэктур x86, x86_64, AArch64, Arm, кампілятараў GCC 8+ і Clang 9+, стандартаў C++17, C++20, C++23.

У склад уваходзяць драйверы для асінхроннай працы з СКБД (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), асінхронна якія працуюць кліенты і серверы для розных пратаколаў (HTTP, HTTPS, GRPC, TCP, UDP, TLS), нізкаўзроўневыя прымітывы для кіравання сінхранізацыяй і доступу да магчымасцяў аперацыйнай сістэмы, а таксама высокаўзроўневыя кампаненты для працы з кэшам, задачамі, размеркаванымі блакіроўкамі, трасіроўкай, метрыкамі, статыстыкай і дадзенымі ў фарматах JSON/YAML/BSON. Падтрымліваецца змена канфігурацыі сэрвісу на лета, без яго спынення.

Раней Яндэкс перавёў у форму адкрытых праектаў і іншыя свае ключавыя тэхналогіі - напрыклад, размеркаваную сістэму кіравання базамі дадзеных YDB, здольную апрацоўваць мільёны запытаў у секунду, а таксама бібліятэку машыннага навучання CatBoost, якую Яндэкс ужывае ў Пошуку і іншых сэрвісах.

Крыніца: opennet.ru

Дадаць каментар