Yandex yuqori yuklangan ilovalarni yaratish uchun foydalanuvchi ramkasi uchun kodni ochdi

Yandex C++ da asinxron rejimda ishlaydigan yuqori yuklangan ilovalarni yaratish imkonini beruvchi Userver ramkasining manba kodini nashr etdi. Ramka Yandex darajasidagi yuklamalar ostida sinovdan o'tkazildi va Yandex Go, Lavka, Delivery, Market va fintech loyihalari kabi xizmatlarda qo'llaniladi. Foydalanuvchi kodi C++ tilida yozilgan va Apache 2.0 litsenziyasi ostida litsenziyalangan.

Userver mikroservis arxitekturasiga ega ilovalarni ishlab chiqish uchun eng mos keladi. Dastlab, Yandex Taxi uchun ramka ishlab chiqilgan bo'lib, uning yordami bilan jamoa monolit dasturdan alohida mustaqil komponentlarni (mikroservislar) ishlab chiqish va ularni turli ilovalarda ishlatish imkonini beruvchi arxitekturaga o'tdi. Mikroservislar avtonomdir, shuning uchun shunga o'xshash arxitekturaga asoslangan dasturni yangilash va unga yangi xususiyatlarni qo'shish oson. Shunday qilib, Taksi buyurtmalari uchun haydovchini topish uchun mikroservis xuddi shunday vazifa uchun ishlatilishi mumkin - masalan, Yandex yetkazib berish buyurtmalarini bajarish uchun kurerni topish. Xuddi shu narsani haydovchi yoki kurerning kelish vaqtini hisoblash va boshqa ko'plab vazifalar bilan qilish mumkin.

Ramka dastlab ishonchlilik va qulaylikka e'tibor qaratilgan holda yaratilgan va uning ichida ishlab chiqish, diagnostika, monitoring, disk raskadrovka va tajribalar uchun zarur bo'lgan barcha narsalar taqdim etilgan. Masalan, foydalanuvchi kompilyatsiya bosqichida xatolarni qanday tuzatishni taklif qiladi, turli ma'lumotlar bazalari bilan ishlash, parametrlarni tezda o'zgartirish va hokazo. Ubuntu, Debian, Fedora, Arch, Gentoo, macOS tizimlari, x86, x86_64, AArch64, Arm arxitekturalari, GCC 8+ va Clang 9+ kompilyatorlari, C++17, C++20, C++23 standartlari uchun eΚΌlon qilingan qoΚ»llab-quvvatlash.

Tarkibga DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL) bilan asinxron ishlash uchun drayverlar, asinxron ishlaydigan mijozlar va turli xil protokollar uchun serverlar (HTTP, HTTPS, GRPC, TCP, UDP, TLS), sinxronizatsiyani boshqarish uchun past darajadagi primitivlar kiradi. va operatsion tizimning imkoniyatlariga, shuningdek kesh, vazifalar, taqsimlangan qulflar, kuzatuv, ko'rsatkichlar, statistika va JSON/YAML/BSON formatidagi ma'lumotlar bilan ishlash uchun yuqori darajadagi komponentlarga kirish. U xizmat konfiguratsiyasini to'xtatmasdan tezda o'zgartirishni qo'llab-quvvatlaydi.

Ilgari Yandex o'zining boshqa asosiy texnologiyalarini ochiq loyihalar ko'rinishiga o'tkazdi - masalan, soniyada millionlab so'rovlarni qayta ishlashga qodir bo'lgan YDB ma'lumotlar bazasini boshqarish tizimi, shuningdek, Yandex Qidiruv va boshqalarda foydalanadigan CatBoost mashina o'rganish kutubxonasi. xizmatlar.

Manba: opennet.ru

a Izoh qo'shish