Yandex ka hapur kodin për kornizën e përdoruesit për krijimin e aplikacioneve me ngarkesë të lartë

Yandex ka publikuar kodin burimor të kornizës Userver, i cili ju lejon të krijoni aplikacione me ngarkesë të lartë në C++ që funksionojnë në modalitetin asinkron. Korniza është testuar nën ngarkesat e nivelit Yandex dhe përdoret në shërbime të tilla si Yandex Go, Lavka, Delivery, Market dhe projektet fintech. Kodi i përdoruesit është i shkruar në C++ dhe është me burim të hapur nën licencën Apache 2.0.

Përdoruesi është më i përshtatshmi për zhvillimin e aplikacioneve me arkitekturë mikroservice. Fillimisht, korniza u zhvillua për Yandex Taxi, me ndihmën e saj ekipi kaloi nga një aplikacion monolit në një arkitekturë që ju lejon të zhvilloni komponentë të veçantë të pavarur (mikroshërbime) dhe t'i përdorni ato në aplikacione të ndryshme. Mikroshërbimet janë autonome, kështu që një aplikacion i bazuar në një arkitekturë të ngjashme është i lehtë për t'u përditësuar dhe për t'i shtuar veçori të reja. Kështu, mikroshërbimi për gjetjen e një shoferi për porositë Taxi mund të përdoret për një detyrë të ngjashme - për shembull, gjetja e një korrieri për të përmbushur porositë e dorëzimit Yandex. E njëjta gjë mund të bëhet me llogaritjen e kohës së mbërritjes së një shoferi ose korrieri dhe shumë detyra të tjera.

Korniza fillimisht u krijua me një theks në besueshmërinë dhe komoditetin, dhe brenda tij sigurohet gjithçka e nevojshme për zhvillimin, diagnostikimin, monitorimin, korrigjimin dhe eksperimentet. Për shembull, përdoruesi sugjeron se si të rregullohen gabimet në fazën e përpilimit, mund të punojë me baza të ndryshme të dhënash, të ndryshojë parametrat menjëherë, etj. Mbështetje e deklaruar për sistemet Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, arkitekturat Arm, përpiluesit GCC 8+ dhe Clang 9+, standardet C++17, C++20, C++23.

Përbërja përfshin drejtuesit për punë asinkrone me DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klientë dhe serverë që punojnë në mënyrë asinkrone për protokolle të ndryshme (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitivë të nivelit të ulët për menaxhimin e sinkronizimit dhe akses në aftësitë e sistemit operativ, si dhe në komponentët e nivelit të lartë për të punuar me cache, detyrat, bllokimet e shpërndara, gjurmimet, metrikat, statistikat dhe të dhënat në formatet JSON/YAML/BSON. Ai mbështet ndryshimin e konfigurimit të shërbimit në fluturim, pa e ndaluar atë.

Më parë, Yandex transferoi teknologjitë e tjera kryesore të tij në formën e projekteve të hapura - për shembull, sistemi i menaxhimit të bazës së të dhënave të shpërndarë YDB, i aftë për të përpunuar miliona kërkesa në sekondë, si dhe bibliotekën e mësimit të makinerive CatBoost, të cilën Yandex përdor në Search dhe të tjera shërbimet.

Burimi: opennet.ru

Shto një koment