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 alusta alkaen painottaen luotettavuutta ja käytettävyyttä, ja se sisältää kaiken tarvittavan kehitykseen, diagnostiikkaan, valvontaan, virheenkorjaukseen ja kokeiluun. Esimerkiksi userver ehdottaa virheiden korjaamista käännöksen aikana, voi työskennellä erilaisten tietokantojen kanssa, muuttaa parametreja lennossa ja niin edelleen. Myös tuki userverille julkistetaan. Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, Arm-arkkitehtuurit, GCC 8+- ja Clang 9+ -kääntäjät, C++17-, C++20- ja C++23-standardit.
Paketti sisältää ajurit asynkroniseen työskentelyyn tietokannan hallintajärjestelmien (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL) kanssa, asynkronisesti toimivien asiakkaiden ja serveria Erilaisille protokollille (HTTP, HTTPS, GRPC, TCP, UDP, TLS) matalan tason primitiivit synkronoinnin hallintaan ja käyttöjärjestelmän ominaisuuksien käyttämiseen sekä korkean tason komponentit välimuistin, tehtävien, hajautettujen lukkojen, jäljityksen, mittareiden, tilastojen ja JSON/YAML/BSON-muotoisten tietojen käsittelyyn. Palvelun kokoonpanoa voidaan muuttaa lennossa pysäyttämättä palvelua.
Yandex on aiemmin julkaissut avoimen lähdekoodin muita keskeisiä teknologioita, kuten hajautetun järjestelmänsä. tietokannan hallinta YDB, joka pystyy käsittelemään miljoonia kyselyitä sekunnissa, ja CatBoost-koneoppimiskirjasto, jota Yandex käyttää haussa ja muissa palveluissa.
Lähde: opennet.ru
