Яндекс жоғары жүктемелі қосымшаларды жасау үшін пайдаланушы құрылымының кодын ашты

Яндекс С++ тілінде асинхронды режимде жұмыс істейтін жоғары жүктемелі қосымшаларды жасауға мүмкіндік беретін Userver құрылымының бастапқы кодын жариялады. Рамка Яндекс деңгейіндегі жүктемелерде сыналған және Yandex Go, Lavka, Delivery, Market және финтех жобалары сияқты қызметтерде қолданылады. Пайдаланушы коды C++ тілінде жазылған және Apache 2.0 лицензиясы бойынша лицензияланған.

Userver микросервис архитектурасы бар қолданбаларды әзірлеу үшін ең қолайлы. Бастапқыда Yandex Taxi үшін фреймворк әзірленді, оның көмегімен команда монолитті қосымшадан жеке тәуелсіз компоненттерді (микросервистерді) әзірлеуге және оларды әртүрлі қолданбаларда пайдалануға мүмкіндік беретін архитектураға ауысты. Микросервис автономды болып табылады, сондықтан ұқсас архитектураға негізделген қолданбаны жаңарту және оған жаңа мүмкіндіктерді қосу оңай. Осылайша, Такси тапсырыстары үшін жүргізушіні табу микросервисі ұқсас тапсырма үшін пайдаланылуы мүмкін - мысалы, Яндекс жеткізу тапсырыстарын орындау үшін курьерді табу. Дәл осылай жүргізушінің немесе курьердің келу уақытын есептеу және басқа да көптеген тапсырмаларды орындауға болады.

Рамка бастапқыда сенімділік пен ыңғайлылыққа баса назар аудара отырып жасалған және оның ішінде әзірлеуге, диагностикаға, бақылауға, жөндеуге және эксперименттерге қажеттінің бәрі қамтамасыз етілген. Мысалы, пайдаланушы компиляция сатысында қателерді қалай түзетуге болатынын ұсынады, әртүрлі дерекқорлармен жұмыс істей алады, параметрлерді жылдам өзгерте алады және т.б. 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 таратылған дерекқорды басқару жүйесі, сондай-ақ Яндекс Search және т.б. пайдаланатын CatBoost машиналық оқыту кітапханасы. қызметтер.

Ақпарат көзі: opennet.ru

пікір қалдыру