I-Yandex ikhiphe ikhodi yomthombo ye-Userver, uhlaka lokudala izinhlelo zokusebenza ku-C++

I-Yandex ishicilele ikhodi yomthombo yohlaka ukubukwa komsebenzisi, okukuvumela ukuthi udale izinhlelo zokusebenza ezilayishwe kakhulu ze-C++ ezisebenza ngemodi engavumelanisi. Uhlaka ihlolwe ekulayishweni kwezinga le-Yandex futhi isetshenziswa kumasevisi afana ne-Yandex Go, i-Lavka, i-Delivery, i-Market kanye namaphrojekthi we-fintech.

ukubukwa komsebenzisi ifaneleka kakhulu ekuthuthukiseni izinhlelo zokusebenza nge-microservice architecture. Ekuqaleni, uphawunoma yenzelwe i-Yandex Taxi, ngosizo lwakhe, ithimba lashintsha lisuka kuhlelo lokusebenza lwe-monolithic laya ekwakhiweni kwezakhiwo ezikuvumela ukuthi uthuthukise izingxenye ezizimele ezihlukene (ama-microservices) futhi uwasebenzise ezinhlelweni ezahlukene.

Namuhla simemezela ukukhishwa kohlaka lomsebenzisi womthombo ovulekile wokwakha izinhlelo zokusebenza ezilayisha kakhulu. Kithina, lena indlela ebalulekile yokwabelana ngolwazi ekuthuthukiseni ama-microservices esiwaqoqile. Nasi isixhumanisi sekhosombe le-GitHub elinekhodi yomthombo, imibhalo, amasampula, isifanekiso sokudala amasevisi akho (ene-CI emisiwe, indawo yokwakha neyokuhlola), kanye nesevisi yokumisa eguquguqukayo. Konke lokhu kukhishwa ngaphansi kwelayisensi ye-Apache 2.0.

Ama-Microservices azimele, ngakho-ke uhlelo lokusebenza olusekelwe ekwakhiweni okunjalo kulula ukuvuselela nokwengeza izici ezintsha kulo. Ngakho-ke, i-microservice yokuthola umshayeli wama-oda amatekisi ingasetshenziselwa umsebenzi ofanayo, isibonelo, ukuthola umthumeli ozogcwalisa ama-oda we-Yandex Delivery. Okufanayo kungenziwa ngokubala isikhathi sokufika komshayeli noma i-courier kanye neminye imisebenzi eminingi.

Uhlaka lwaqalwa ngokugcizelela ukwethembeka kanye nokuba lula, futhi ngaphakathi kuyo ihlinzeka ngakho konke okudingayo ekuthuthukisweni, ukuxilonga, ukugada, ukulungisa amaphutha, kanye nokuhlola. Isibonelo, umsebenzisi uphakamisa ukuthi angawalungisa kanjani amaphutha esigabeni sokwakha, azi ukuthi asebenza kanjani ngemininingwane ehlukene, aguqule amapharamitha endizeni, njll.

Mayelana nokuqanjwa, kushiwo lokho abashayeli bomsebenzi we-asynchronous ne-DBMS afakiwe (I-MongoDB, i-PostgreSQL, i-Redis, i-ClickHouse, i-MySQL), amaklayenti namaseva asebenza ngokulinganayo kumaphrothokholi ahlukahlukene (i-HTTP, i-HTTPS, i-GRPC, i-TCP, i-UDP, i-TLS), ama-primitives asezingeni eliphansi ukuphatha ukuvumelanisa kanye nokufinyelela kumakhono wesistimu kanye izingxenye ezisezingeni eliphezulu ezizosebenza ngokulondoloza isikhashana, imisebenzi, izingidi ezisabalalisiwe, ukulandelela, amamethrikhi, izibalo, nedatha kumafomethi we-JSON/YAML/BSON, futhi isekela ukushintsha ukucushwa kwesevisi ngokuhamba kwesikhathi, ngaphandle kokuyimisa.

Ngokuqondene nokubi kwezakhiwo ze-monolithic kushiwo okulandelayo:

  • Ukuhlanganiswa kwayo yonke ikhodi ngaphakathi kwe-monolith. Ngesisekelo sekhodi esikhulu, ukwakha nokuhlola kungathatha amahora, futhi ukuthunyelwa kungathatha usuku lonke.
  • Vala ukusebenzisana kwezingxenye ezihlukene zekhodi. Kufanele wenze umzamo omkhulu ekubuyekezweni kwekhodi ukuze ukuxhumana nezingxenye ezihlukene ze-monolith kungabi ukungcola.
  • Ubugebengu. Ushintsho kumojuli eyodwa lungaphula enye imojuli.
  • Izindawo zokuzibophezela ezifiphele. Phakathi nenqubo yokuthuthukiswa, izingxenye eziningi zekhodi ziyajwayela, ziqala ukusetshenziswa amaqembu ahlukene, futhi lokhu kuhle. Kodwa ngenxa yalokho, akucaci ukuthi ubani ophethe imodyuli ephumela: ababhali bokuqala; labo abenze ukuhlela okuningi; noma labo abasebenzisa kakhulu imojuli kukhodi.

Ngaphambilini, i-Yandex idlulisele obunye ubuchwepheshe bayo obubalulekile ngendlela yamaphrojekthi avulekile, isibonelo, i-YDB isabalalisa uhlelo lokuphatha isizindalwazi, olukwazi ukucubungula izigidi zezicelo ngomzuzwana, kanye nomtapo wolwazi wokufunda womshini we-CatBoost, i-Yandex ewusebenzisa ku-Search nokunye. amasevisi.

Okokugcina kulabo abanentshisekelo yokwazi kabanzi ngaloSicela uqaphele ukuthi i-Userver okwamanje isekelwa Ubuntu, Debian, Fedora, Arch, Gentoo, macOS systems, x86, x86_64, AArch64, Arm architectures, GCC 8+ and Clang 9+ compilers, C++17 standards, C+ +20, C ++23.

Ikhodi yomsebenzisi ibhalwe ku-C++ futhi Kuvuliwe ngaphansi kwelayisensi ye-Apache 2.0 futhi kungaboniswana nayo kusukela ku- isixhumanisi esilandelayo.


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.