Yandex malfermis la kadron de uzanto por krei altŝarĝajn aplikaĵojn

Yandex publikigis la fontkodon de la kadro Userver, kiu permesas krei altŝarĝajn aplikaĵojn en C++, kiuj funkcias en nesinkrona reĝimo. La kadro estis provita sub Yandex-nivelaj ŝarĝoj kaj estas uzata en servoj kiel Yandex Go, Lavka, Delivery, Market kaj fintech-projektoj. La kodo de Userver estas skribita en C++ kaj estas malfermfonta laŭ la permesilo Apache 2.0.

Userver plej taŭgas por disvolvi aplikaĵojn kun mikroserva arkitekturo. Komence, la kadro estis evoluigita por Yandex Taxi, kun ĝia helpo la teamo ŝanĝis de monolita aplikaĵo al arkitekturo, kiu ebligas al vi evoluigi apartajn sendependajn komponantojn (mikroservoj) kaj uzi ilin en malsamaj aplikoj. Mikroservoj estas aŭtonomaj, do aplikaĵo bazita sur simila arkitekturo estas facile ĝisdatigebla kaj aldoni novajn funkciojn al ĝi. Tiel, la mikroservo por trovi ŝoforon por Taksiaj mendoj povas esti uzata por simila tasko - ekzemple trovi kurieron por plenumi Yandex Delivery mendojn. La sama povas esti farita kun kalkulado de la alventempo de ŝoforo aŭ kuriero kaj multaj aliaj taskoj.

La kadro estis komence kreita kun emfazo de fidindeco kaj komforto, kaj en ĝi, ĉio necesa por disvolviĝo, diagnozo, monitorado, senararigado kaj eksperimentoj estas provizita. Ekzemple, userver sugestas kiel ripari erarojn ĉe la kompila stadio, povas labori kun malsamaj datumbazoj, ŝanĝi parametrojn sur la flugo, ktp. Deklarita subteno por Ubuntu, Debian, Fedora, Arch, Gentoo, macOS-sistemoj, x86, x86_64, AArch64, Arm-arkitekturoj, GCC 8+ kaj Clang 9+ kompililoj, C++17, C++20, C++23-normoj.

La komponado inkluzivas ŝoforojn por nesinkrona laboro kun DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), nesinkrone laborantaj klientoj kaj serviloj por diversaj protokoloj (HTTP, HTTPS, GRPC, TCP, UDP, TLS), malaltnivelaj primitivuloj por administrado de sinkronigado. kaj aliro al la kapabloj de la operaciumo, same kiel altnivelaj komponantoj por labori kun kaŝmemoro, taskoj, distribuitaj seruroj, spurado, metrikoj, statistikoj kaj datumoj en JSON/YAML/BSON-formatoj. Ĝi subtenas ŝanĝi la servo-agordon sur la flugo, sen haltigi ĝin.

Antaŭe, Yandex transdonis siajn aliajn ŝlosilajn teknologiojn al la formo de malfermitaj projektoj - ekzemple la distribua datumbaza mastruma sistemo YDB, kapabla prilabori milionojn da petoj sekundo, kaj ankaŭ la bibliotekon de maŝinlernado CatBoost, kiun Yandex uzas en Serĉo kaj aliaj. servoj.

fonto: opennet.ru

Aldoni komenton