Yandex wis nerbitake kode sumber saka pigura panganggo, sing ngidini sampeyan nggawe aplikasi C ++ sing akeh dimuat sing bisa digunakake ing mode asinkron. Pigura wis diuji ing unggahan tingkat Yandex lan digunakake ing layanan kayata Yandex Go, Lavka, Delivery, Market lan proyek fintech.
panganggo iku paling cocog kanggo ngembangaken aplikasi karo arsitektur microservice. Kaping pisanan, tandhautawa dikembangake kanggo Yandex Taxi, kanthi bantuan, tim diganti saka aplikasi monolitik menyang arsitektur sing ngidini sampeyan ngembangake komponen independen sing kapisah (layanan mikro) lan digunakake ing macem-macem aplikasi.
Dina iki kita ngumumake rilis kerangka pangguna open source kanggo mbangun aplikasi kanthi beban dhuwur. Kanggo kita, iki minangka cara sing penting kanggo nuduhake pengalaman ngembangake layanan mikro sing wis diklumpukake. Iki minangka link menyang repositori GitHub kanthi kode sumber, dokumentasi, conto, cithakan kanggo nggawe layanan sampeyan dhewe (karo CI dikonfigurasi, mbangun lan nguji lingkungan), lan layanan konfigurasi dinamis. Kabeh iki dirilis miturut lisensi Apache 2.0.
Layanan mikro iku otonom, supaya aplikasi adhedhasar arsitektur kuwi gampang kanggo nganyari lan nambah fitur anyar. Mulane, layanan mikro kanggo nemokake driver kanggo pesenan Taxi bisa digunakake kanggo tugas sing padha, contone, golek kurir kanggo nepaki pesenan Pangiriman Yandex. Sing padha bisa ditindakake kanthi ngitung wektu tekane sopir utawa kurir lan akeh tugas liyane.
Kerangka kasebut wiwitane digawe kanthi penekanan ing linuwih lan kepenak, lan ing njero nyedhiyakake kabeh sing dibutuhake kanggo pangembangan, diagnostik, ngawasi, debugging, lan eksperimen. Contone, userver nyaranake carane ndandani kesalahan ing tataran mbangun, ngerti carane bisa karo database beda, paramèter ngganti ing fly, etc.
Babagan komposisi kasebut, kasebut pembalap kanggo karya bedo karo DBMS klebu (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klien lan server sing makarya kanthi ora sinkron kanggo macem-macem protokol (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitif tingkat rendah kanggo ngatur sinkronisasi lan akses menyang kemampuan sistem uga komponen tingkat dhuwur kanggo nggarap caching, tugas, kunci sing disebarake, nelusuri, metrik, statistik, lan data ing format JSON / YAML / BSON, plus ndhukung ngganti konfigurasi layanan ing fly, tanpa mandheg.
Dene kekurangane arsitektur monolitik ing ngisor iki disebutake:
- Konsolidasi kabeh kode ing monolit. Kanthi basis kode gedhe, bangunan lan testing bisa njupuk jam, lan panyebaran bisa njupuk sedina muput.
- Interaksi cedhak saka macem-macem bagean kode. Sampeyan kudu nglampahi akeh gaweyan ing review kode supaya antarmuka menyang macem-macem bagean monolit ora dadi kekacoan.
- Fragility. A owah-owahan ing siji modul bisa break modul liyane.
- Area tanggung jawab sing kabur. Sajrone proses pangembangan, akeh bagean saka kode generalize, wiwit digunakake dening tim beda, lan iki apik. Nanging minangka asil, iku ora cetha sing tanggung jawab kanggo modul asil: penulis pisanan; sing paling akeh nggawe suntingan; utawa sing paling aktif nggunakake modul ing kode.
Sadurunge, Yandex nransfer teknologi kunci liyane ing wangun proyek mbukak, contone, sistem manajemen basis data sing disebarake YDB, sing bisa ngolah jutaan panjaluk saben detik, uga perpustakaan pembelajaran mesin CatBoost, sing digunakake Yandex ing Panelusuran lan liya-liyane. layanan.
Pungkasan kanggo sampeyan sing pengin ngerti luwih akeh babagan ikiElinga yen Userver saiki didhukung kanggo Ubuntu, Debian, Fedora, Arch, Gentoo, sistem macOS, x86, x86_64, AArch64, arsitektur Arm, kompiler GCC 8+ lan Clang 9+, standar C++17, C++ +20, C ++ 23.
Kode Userver ditulis ing C ++ lan Iku mbukak ing Apache 2.0 lisensi lan bisa takon saka link ing ngisor iki.
Dadi pisanan komentar