Yandex ir atvēris kodu lietotāja ietvaram augstas slodzes lietojumprogrammu izveidei

Yandex ir publicējis Userver ietvara pirmkodu, kas ļauj C++ valodā izveidot lielas slodzes lietojumprogrammas, kas darbojas asinhronā režīmā. Ietvars ir pārbaudīts Yandex līmeņa slodzēs un tiek izmantots tādos pakalpojumos kā Yandex Go, Lavka, Delivery, Market un fintech projekti. Lietotāja kods ir rakstīts C++ valodā un ir licencēts saskaņā ar Apache 2.0 licenci.

Userver ir vislabāk piemērots lietojumprogrammu izstrādei ar mikropakalpojumu arhitektūru. Sākotnēji ietvars tika izstrādāts Yandex Taxi, ar tā palīdzību komanda pārgāja no monolītās lietojumprogrammas uz arhitektūru, kas ļauj izstrādāt atsevišķus neatkarīgus komponentus (mikropakalpojumus) un izmantot tos dažādās lietojumprogrammās. Mikropakalpojumi ir autonomi, tāpēc lietojumprogrammu, kuras pamatā ir līdzīga arhitektūra, ir viegli atjaunināt un pievienot tai jaunas funkcijas. Tādējādi mikropakalpojumu vadītāja atrašanai Taxi pasūtījumiem var izmantot līdzīgam uzdevumam - piemēram, kurjera atrašanai Yandex Delivery pasūtījumu izpildei. To pašu var izdarīt, aprēķinot šofera vai kurjera ierašanās laiku un daudzus citus uzdevumus.

Ietvars sākotnēji tika izveidots ar uzsvaru uz uzticamību un ērtībām, un tajā ir nodrošināts viss nepieciešamais izstrādei, diagnostikai, uzraudzībai, atkļūdošanai un eksperimentiem. Piemēram, userver iesaka, kā labot kļūdas kompilācijas stadijā, var strādāt ar dažādām datu bāzēm, lidojuma laikā mainīt parametrus utt. Deklarēts atbalsts Ubuntu, Debian, Fedora, Arch, Gentoo, macOS sistēmām, x86, x86_64, AArch64, Arm arhitektūrām, GCC 8+ un Clang 9+ kompilatoriem, C++17, C++20, C++23 standartiem.

Sastāvā ir draiveri asinhronam darbam ar DBVS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asinhroni strādājoši klienti un serveri dažādiem protokoliem (HTTP, HTTPS, GRPC, TCP, UDP, TLS), zema līmeņa primitīvi sinhronizācijas pārvaldībai. un piekļuvi operētājsistēmas iespējām, kā arī augsta līmeņa komponentiem darbam ar kešatmiņu, uzdevumiem, sadalītiem bloķējumiem, izsekošanu, metriku, statistiku un datiem JSON/YAML/BSON formātos. Tā atbalsta pakalpojuma konfigurācijas maiņu lidojuma laikā, to neapstādot.

Iepriekš Yandex nodeva citas savas galvenās tehnoloģijas atvērto projektu veidā - piemēram, izplatīto datu bāzes pārvaldības sistēmu YDB, kas spēj apstrādāt miljoniem pieprasījumu sekundē, kā arī CatBoost mašīnmācīšanās bibliotēku, ko Yandex izmanto meklēšanā un citos. pakalpojumus.

Avots: opennet.ru

Pievieno komentāru