Yandex julkaisi Userverin lähdekoodin, kehyksen sovellusten luomiseen C++:ssa

Yandex on julkaissut lähdekoodin kehyksestä käyttäjänäkymä, jonka avulla voit luoda erittäin ladattuja C++-sovelluksia, jotka toimivat asynkronisessa tilassa. Kehys on testattu Yandex-tason latauksilla ja sitä käytetään palveluissa, kuten Yandex Go, Lavka, Delivery, Market ja fintech-projekteissa.

käyttäjänäkymä se soveltuu parhaiten mikropalveluarkkitehtuurilla varustettujen sovellusten kehittämiseen. Aluksi merkkitai se on kehitetty Yandex Taxia varten, hänen avullaan tiimi muuttui monoliittisesta sovelluksesta arkkitehtuuriksi, jonka avulla voit kehittää erillisiä itsenäisiä komponentteja (mikropalveluita) ja käyttää niitä erilaisissa sovelluksissa.

Tänään ilmoitamme avoimen lähdekoodin käyttäjäkehyksen julkaisemisesta korkean kuormituksen sovellusten rakentamiseen. Meille tämä on tärkeä tapa jakaa kertynyttä kokemustamme mikropalvelujen kehittämisestä. Tässä on linkki GitHub-tietovarastoon, jossa on lähdekoodia, dokumentaatiota, näytteitä, malli omien palvelujen luomiseen (CI-määritettynä, rakennus- ja testausympäristö) sekä dynaaminen määrityspalvelu. Kaikki tämä on julkaistu Apache 2.0 -lisenssillä.

Mikropalvelut ovat itsenäisiä, joten tällaiseen arkkitehtuuriin perustuva sovellus on helppo päivittää ja lisätä siihen uusia ominaisuuksia. Siksi 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ä laskemalla kuljettajan tai kuriirin saapumisaika ja monia muita tehtäviä.

Kehys luotiin alun perin painottaen luotettavuutta ja mukavuutta, ja sen sisällä on kaikki mitä tarvitset kehittämiseen, diagnostiikkaan, valvontaan, virheenkorjaukseen ja kokeiluun. Esimerkiksi userver ehdottaa virheiden korjaamista rakennusvaiheessa, osaa työskennellä eri tietokantojen kanssa, muuttaa parametreja lennossa jne.

Koostumuksesta mainitaan mukana on ajurit asynkroniseen työhön DBMS:n kanssa (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), eri protokollien (HTTP, HTTPS, GRPC, TCP, UDP, TLS) asynkronisesti toimivat asiakkaat ja palvelimet, matalan tason primitiivit synkronoinnin ja järjestelmän ominaisuuksien hallintaan sekä korkean tason komponentteja välimuistin, tehtävien, hajautettujen lukitusten, jäljityksen, mittareiden, tilastojen ja tietojen kanssa JSON/YAML/BSON-muodossa, ja lisäksi se tukee palvelun kokoonpanon muuttamista lennossa sitä pysäyttämättä.

Mitä tulee haitoihin monoliittisesta arkkitehtuurista mainitaan seuraavat:

  • Kaiken koodin yhdistäminen monoliitin sisällä. Laajan koodikannan ansiosta rakentaminen ja testaus voivat kestää tunteja ja käyttöönotto voi kestää koko päivän.
  • Koodin eri osien tiivis vuorovaikutus. Sinun täytyy käyttää paljon vaivaa koodien tarkistamiseen, jotta monoliitin eri osien rajapinnat eivät sotkeutuisi.
  • Hauraus. Muutos yhdessä moduulissa voi rikkoa toisen moduulin.
  • Hämärtyneet vastuualueet. Kehitysprosessin aikana monet koodin osat yleistyvät, alkavat eri tiimien käyttöön, ja tämä on hyvä. Mutta sen seurauksena ei ole selvää, kuka on vastuussa tuloksena olevasta moduulista: ensimmäiset kirjoittajat; ne, jotka tekivät eniten muokkauksia; tai ne, jotka aktiivisemmin käyttävät moduulia koodissa.

Aiemmin Yandex siirsi muita keskeisiä teknologioitaan avoimien projektien muodossa, esimerkiksi YDB:n hajautetun tietokannan hallintajärjestelmän, joka pystyy käsittelemään miljoonia pyyntöjä sekunnissa, sekä CatBoost-koneoppimiskirjaston, jota Yandex käyttää haussa ja muissa. palvelut.

Vihdoin niille, jotka ovat kiinnostuneita tietämään siitä lisääHuomaa, että Userveriä tuetaan tällä hetkellä Ubuntu-, Debian-, Fedora-, Arch-, Gentoo-, macOS-järjestelmille, x86-, x86_64-, AArch64-, Arm-arkkitehtuureille, GCC 8+- ja Clang 9+ -kääntimille, C++17-standardeille, C+ +20:lle, C:lle. ++23.

Käyttäjäkoodi on kirjoitettu C++ ja Se on auki Apache 2.0 -lisenssin alaisena, ja sen voi lukea osoitteesta seuraava linkki.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.