Binuksan ng Yandex ang code para sa framework ng userver para sa paglikha ng mga application na may mataas na load

Nai-publish ng Yandex ang source code ng Userver framework, na nagbibigay-daan sa iyong lumikha ng mga high-load na application sa C++ na gumagana sa asynchronous mode. Ang framework ay nasubok sa ilalim ng Yandex-level load at ginagamit sa mga serbisyo tulad ng Yandex Go, Lavka, Delivery, Market at mga proyekto ng fintech. Ang code ng userver ay nakasulat sa C++ at lisensyado sa ilalim ng lisensya ng Apache 2.0.

Ang userver ay pinakaangkop para sa pagbuo ng mga application na may microservice architecture. Sa una, ang balangkas ay binuo para sa Yandex Taxi, sa tulong nito ang koponan ay lumipat mula sa isang monolitikong aplikasyon sa isang arkitektura na nagbibigay-daan sa iyo upang bumuo ng hiwalay na mga independiyenteng bahagi (microservices) at gamitin ang mga ito sa iba't ibang mga application. Ang mga microservice ay nagsasarili, kaya ang isang application na batay sa isang katulad na arkitektura ay madaling i-update at magdagdag ng mga bagong tampok dito. Kaya, ang microservice para sa paghahanap ng driver para sa mga order ng Taxi ay maaaring gamitin para sa isang katulad na gawain - halimbawa, paghahanap ng isang courier upang matupad ang mga order sa Paghahatid ng Yandex. Ang parehong ay maaaring gawin sa pagkalkula ng oras ng pagdating ng isang driver o courier at marami pang ibang gawain.

Ang balangkas ay unang nilikha na may diin sa pagiging maaasahan at kaginhawahan, at sa loob nito, lahat ng kailangan para sa pag-unlad, diagnostic, pagsubaybay, pag-debug at mga eksperimento ay ibinigay. Halimbawa, ang userver ay nagmumungkahi kung paano ayusin ang mga error sa yugto ng compilation, maaaring gumana sa iba't ibang mga database, baguhin ang mga parameter sa mabilisang, at iba pa. Idineklara ang suporta para sa Ubuntu, Debian, Fedora, Arch, Gentoo, macOS system, x86, x86_64, AArch64, Arm architecture, GCC 8+ at Clang 9+ compiler, C++17, C++20, C++23 na pamantayan.

Kasama sa komposisyon ang mga driver para sa asynchronous na trabaho sa DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynchronously working client at server para sa iba't ibang protocol (HTTP, HTTPS, GRPC, TCP, UDP, TLS), low-level primitives para sa synchronization management at pag-access sa mga kakayahan ng operating system, pati na rin ang mga high-level na bahagi para sa pagtatrabaho sa cache, mga gawain, ipinamahagi na mga lock, pagsubaybay, mga sukatan, istatistika at data sa mga format na JSON/YAML/BSON. Sinusuportahan nito ang pagbabago ng configuration ng serbisyo sa mabilisang, nang hindi ito pinipigilan.

Noong nakaraan, inilipat ng Yandex ang iba pang mga pangunahing teknolohiya nito sa anyo ng mga bukas na proyekto - halimbawa, ang distributed database management system na YDB, na may kakayahang magproseso ng milyun-milyong kahilingan sa bawat segundo, pati na rin ang CatBoost machine learning library, na ginagamit ng Yandex sa Search at iba pa. serbisyo.

Pinagmulan: opennet.ru

Magdagdag ng komento