Yandex yüksək yüklü proqramlar yaratmaq üçün istifadəçi çərçivəsi üçün kodu açdı

Yandex C++ dilində asinxron rejimdə işləyən yüksək yüklü proqramlar yaratmağa imkan verən Userver çərçivəsinin mənbə kodunu dərc edib. Çərçivə Yandex səviyyəli yüklər altında sınaqdan keçirilib və Yandex Go, Lavka, Çatdırılma, Market və fintech layihələri kimi xidmətlərdə istifadə olunur. İstifadəçinin kodu C++ dilində yazılmışdır və Apache 2.0 lisenziyası altında açıq mənbəlidir.

İstifadəçi mikroservis arxitekturasına malik proqramlar hazırlamaq üçün ən uyğundur. Əvvəlcə Yandex Taxi üçün çərçivə hazırlanmışdır, onun köməyi ilə komanda monolit tətbiqdən ayrı-ayrı müstəqil komponentləri (mikroservislər) hazırlamağa və onlardan müxtəlif tətbiqlərdə istifadə etməyə imkan verən arxitekturaya keçdi. Mikroservislər avtonomdur, buna görə də oxşar arxitekturaya əsaslanan tətbiqi yeniləmək və ona yeni funksiyalar əlavə etmək asandır. Beləliklə, Taksi sifarişləri üçün sürücü tapmaq üçün mikroservis oxşar vəzifə üçün istifadə edilə bilər - məsələn, Yandex Çatdırılma sifarişlərini yerinə yetirmək üçün kuryer tapmaq. Eyni şey sürücünün və ya kuryerin gəliş vaxtının hesablanması və bir çox digər tapşırıqlarla edilə bilər.

Çərçivə əvvəlcə etibarlılıq və rahatlığa vurğu ilə yaradılmışdır və onun daxilində inkişaf, diaqnostika, monitorinq, sazlama və təcrübələr üçün lazım olan hər şey təmin edilmişdir. Məsələn, istifadəçi kompilyasiya mərhələsində səhvləri necə düzəltməyi təklif edir, müxtəlif verilənlər bazaları ilə işləyə bilər, parametrləri tez dəyişdirə bilər və s. Ubuntu, Debian, Fedora, Arch, Gentoo, macOS sistemləri, x86, x86_64, AArch64, Arm arxitekturaları, GCC 8+ və Clang 9+ tərtibçiləri, C++17, C++20, C++23 standartları üçün dəstək elan edildi.

Kompozisiyaya DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL) ilə asinxron iş üçün drayverlər, asinxron işləyən müştərilər və müxtəlif protokollar üçün serverlər (HTTP, HTTPS, GRPC, TCP, UDP, TLS), sinxronizasiyanın idarə edilməsi üçün aşağı səviyyəli primitivlər daxildir. və əməliyyat sisteminin imkanlarına, həmçinin JSON/YAML/BSON formatlarında keş, tapşırıqlar, paylanmış kilidlər, izləmə, ölçülər, statistika və verilənlərlə işləmək üçün yüksək səviyyəli komponentlərə çıxış. Xidmət konfiqurasiyasını dayandırmadan tez dəyişməyi dəstəkləyir.

Əvvəllər Yandex digər əsas texnologiyalarını açıq layihələr formasına keçirdi - məsələn, saniyədə milyonlarla sorğunu emal etməyə qadir olan paylanmış verilənlər bazası idarəetmə sistemi YDB, həmçinin Yandex-in Axtarışda istifadə etdiyi CatBoost maşın öyrənmə kitabxanası və digərləri. xidmətlər.

Mənbə: opennet.ru

Добавить комментарий