Yandex пусна изходния код на Userver, рамка за създаване на приложения на C++

Yandex публикува изходния код на рамката потребителски изглед, което ви позволява да създавате силно натоварени C++ приложения, които работят в асинхронен режим. Рамката е тестван при качвания на ниво Yandex и се използва в услуги като Yandex Go, Lavka, Delivery, Market и fintech проекти.

потребителски изглед той е най-подходящ за разработване на приложения с микросервизна архитектура. Първоначално маркатаили е разработен за Yandex Taxi, с негова помощ екипът премина от монолитно приложение към архитектура, която ви позволява да разработвате отделни независими компоненти (микроуслуги) и да ги използвате в различни приложения.

Днес обявяваме пускането на потребителската рамка с отворен код за изграждане на приложения с голямо натоварване. За нас това е важен начин да споделим опита в разработването на микроуслуги, който сме натрупали. Ето връзка към хранилище на GitHub с изходен код, документация, образци, шаблон за създаване на ваши собствени услуги (с конфигурирана CI, среда за изграждане и тестване) и услуга за динамично конфигуриране. Всичко това е пуснато под лиценз Apache 2.0.

Микроуслугите са автономни, така че приложение, базирано на такава архитектура, е лесно за актуализиране и добавяне на нови функции към него. Следователно микроуслугата за намиране на шофьор за поръчки за такси може да се използва за подобна задача, например намиране на куриер за изпълнение на поръчки за доставка на Yandex. Същото може да се направи с изчисляването на времето за пристигане на шофьора или куриера и много други задачи.

Рамката първоначално е създадена с акцент върху надеждността и удобството, и вътре осигурява всичко необходимо за разработка, диагностика, наблюдение, отстраняване на грешки и експериментиране. Например, userver предлага как да коригира грешки на етапа на изграждане, знае как да работи с различни бази данни, да променя параметрите в движение и т.н.

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

Що се отнася до недостатъците от монолитната архитектура се споменават следните:

  • Консолидиране на целия код в монолит. С голяма кодова база изграждането и тестването може да отнеме часове, а внедряването може да отнеме цял ден.
  • Тясно взаимодействие на различни части от кода. Трябва да похарчите много усилия за прегледи на кода, така че интерфейсите към различните части на монолита да не се превърнат в бъркотия.
  • Крехкост. Промяна в един модул може да повреди друг модул.
  • Размити зони на отговорност. По време на процеса на разработка много части от кода се генерализират, започват да се използват от различни екипи и това е добре. Но в резултат на това не е ясно кой е отговорен за получения модул: първите автори; тези, които са направили най-много редакции; или тези, които най-активно използват модула в кода.

Преди това Yandex прехвърли другите си ключови технологии под формата на отворени проекти, например системата за управление на разпределена база данни YDB, способна да обработва милиони заявки в секунда, както и библиотеката за машинно обучение CatBoost, която Yandex използва в Търсене и други услуги.

Накрая за тези, които се интересуват да знаят повече за товаМоля, обърнете внимание, че Userver в момента се поддържа за Ubuntu, Debian, Fedora, Arch, Gentoo, macOS системи, x86, x86_64, AArch64, Arm архитектури, GCC 8+ и Clang 9+ компилатори, C++17 стандарти, C+ +20, C ++23.

Потребителският код е написан на C++ и Отворено е под лиценз Apache 2.0 и може да бъде консултиран от следваща връзка.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.