Яндекс жогорку жүктөмдүү тиркемелерди түзүү үчүн колдонуучу рамкасынын кодун ачты

Яндекс C++ тилинде асинхрондук режимде иштеген жогорку жүктөмдүү тиркемелерди түзүүгө мүмкүндүк берген Userver фреймворкинин баштапкы кодун жарыялады. Алкак Яндекс деңгээлиндеги жүктөмдөрдүн астында сыналган жана Yandex Go, Lavka, Delivery, Market жана fintech долбоорлору сыяктуу кызматтарда колдонулат. Колдонуучунун коду C++ тилинде жазылган жана Apache 2.0 лицензиясынын астында лицензияланган.

Userver микросервис архитектурасы менен тиркемелерди иштеп чыгуу үчүн эң ылайыктуу. Башында Yandex Taxi үчүн фреймворк иштелип чыккан, анын жардамы менен команда монолиттүү тиркемеден өзүнчө көз карандысыз компоненттерди (микросервистерди) иштеп чыгууга жана аларды ар кандай тиркемелерде колдонууга мүмкүндүк берген архитектурага өттү. Микросервистер автономдуу, ошондуктан окшош архитектурага негизделген тиркемени жаңыртуу жана ага жаңы функцияларды кошуу оңой. Ошентип, такси заказдары үчүн айдоочуну табуу микросервиси ушундай эле тапшырма үчүн колдонулушу мүмкүн - мисалы, Yandex Delivery заказдарын аткаруу үчүн чабарманы табуу. Ошол эле айдоочунун же чабармандын келүү убактысын эсептөө жана башка көптөгөн милдеттерди аткаруу менен жасалышы мүмкүн.

Алкак башында ишенимдүүлүккө жана ыңгайлуулукка басым жасоо менен түзүлгөн жана анын ичинде иштеп чыгуу, диагностика, мониторинг, мүчүлүштүктөрдү оңдоо жана эксперименттер үчүн зарыл болгон нерселердин баары камтылган. Мисалы, колдонуучу компиляция стадиясында каталарды кантип оңдоону сунуштайт, ар кандай маалымат базалары менен иштей алат, параметрлерди ылдам өзгөртө алат ж.б.у.с. Ubuntu, Debian, Fedora, Arch, Gentoo, macOS системалары, x86, x86_64, AArch64, Arm архитектуралары, GCC 8+ жана Clang 9+ компиляторлору, C++17, C++20, C++23 стандарттары үчүн колдоо жарыяланды.

Курамга DBMS менен асинхрондук иштөө үчүн драйверлер (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), асинхрондуу иштеген кардарлар жана ар кандай протоколдор үчүн серверлер (HTTP, HTTPS, GRPC, TCP, UDP, TLS), синхрондоштурууну башкаруу үчүн төмөнкү деңгээлдеги примитивдер кирет. жана операциялык тутумдун мүмкүнчүлүктөрүнө, ошондой эле кэш, тапшырмалар, бөлүштүрүлгөн кулпулар, байкоо, метрика, статистика жана JSON/YAML/BSON форматтарындагы маалыматтар менен иштөө үчүн жогорку деңгээлдеги компоненттерге жетүү. Бул кызматтын конфигурациясын токтобостон туруп эле өзгөртүүнү колдойт.

Буга чейин Яндекс өзүнүн башка негизги технологияларын ачык долбоорлор формасына өткөргөн - мисалы, секундасына миллиондогон суроо-талаптарды иштеп чыгууга жөндөмдүү YDB бөлүштүрүлгөн маалымат базасын башкаруу системасы, ошондой эле Яндекс Издөөдө жана башка кызматтарда колдонгон CatBoost машина үйрөнүү китепканасы. кызматтар.

Source: opennet.ru

Комментарий кошуу