Yandex on avannut koodin käyttäjäkehykselle korkean kuormituksen sovellusten luomiseen

Yandex on julkaissut Userver-kehyksen lähdekoodin, jonka avulla voit luoda asynkronisessa tilassa toimivia korkean kuormituksen sovelluksia C++:ssa. Kehys on testattu Yandex-tason kuormituksissa ja sitä käytetään palveluissa, kuten Yandex Go, Lavka, Delivery, Market ja fintech-projekteissa. Käyttäjän koodi on kirjoitettu C++-kielellä ja se on avoimen lähdekoodin Apache 2.0 -lisenssillä.

Userver soveltuu parhaiten mikropalveluarkkitehtuurilla varustettujen sovellusten kehittämiseen. Alun perin kehys kehitettiin Yandex Taxia varten, ja sen avulla tiimi siirtyi monoliittisesta sovelluksesta arkkitehtuuriin, jonka avulla voit kehittää erillisiä itsenäisiä komponentteja (mikropalveluita) ja käyttää niitä eri sovelluksissa. Mikropalvelut ovat itsenäisiä, joten samanlaiseen arkkitehtuuriin perustuva sovellus on helppo päivittää ja lisätä siihen uusia ominaisuuksia. Siten Taksitilausten kuljettajan etsimiseen tarkoitettua mikropalvelua voidaan käyttää samanlaiseen tehtävään - esimerkiksi kuriirin löytämiseen Yandex Delivery -tilausten täyttämiseksi. Sama voidaan tehdä kuljettajan tai kuriirin saapumisajan laskemisen ja monien muiden tehtävien kanssa.

Kehys luotiin alun perin painottaen luotettavuutta ja mukavuutta, ja sen sisällä on kaikki kehittämiseen, diagnostiikkaan, valvontaan, virheenkorjaukseen ja kokeiluihin tarvittava. Esimerkiksi userver ehdottaa kuinka korjata virheet käännösvaiheessa, voi työskennellä eri tietokantojen kanssa, muuttaa parametreja lennossa ja niin edelleen. Ilmoitettu tuki Ubuntu-, Debian-, Fedora-, Arch-, Gentoo-, macOS-järjestelmille, x86-, x86_64-, AArch64-, Arm-arkkitehtuureille, GCC 8+- ja Clang 9+ -kääntimille, C++17-, C++20-, C++23-standardeille.

Koostumus sisältää ajurit asynkroniseen työhön DBMS:n kanssa (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynkronisesti toimivat asiakkaat ja palvelimet eri protokollille (HTTP, HTTPS, GRPC, TCP, UDP, TLS), matalan tason primitiivit synkronoinnin hallintaan ja pääsy käyttöjärjestelmän ominaisuuksiin sekä korkean tason komponentteihin välimuistin, tehtävien, hajautettujen lukitusten, jäljityksen, mittareiden, tilastojen ja tietojen kanssa JSON/YAML/BSON-muodossa. Se tukee palvelun konfiguraation muuttamista lennossa pysäyttämättä sitä.

Aiemmin Yandex siirsi muut avainteknologiansa avoimien projektien muotoon - esimerkiksi hajautetun tietokannan hallintajärjestelmän YDB, joka pystyy käsittelemään miljoonia pyyntöjä sekunnissa, sekä CatBoost-koneoppimiskirjaston, jota Yandex käyttää hauissa ja muissa. palvelut.

Lähde: opennet.ru

Lisää kommentti