Yandex mengeluarkan kod sumber Userver, rangka kerja untuk mencipta aplikasi dalam C++

Yandex telah menerbitkan kod sumber daripada bingkai itu pandangan pengguna, yang membolehkan anda mencipta aplikasi C++ yang sangat dimuatkan yang berfungsi dalam mod tak segerak. Bingkai itu telah diuji pada muat naik peringkat Yandex dan digunakan dalam perkhidmatan seperti Yandex Go, Lavka, Delivery, Market dan projek fintech.

pandangan pengguna ia paling sesuai untuk membangunkan aplikasi dengan seni bina perkhidmatan mikro. Pada mulanya, tandaatau dibangunkan untuk Teksi Yandex, dengan bantuannya, pasukan itu berubah daripada aplikasi monolitik kepada seni bina yang membolehkan anda membangunkan komponen bebas berasingan (perkhidmatan mikro) dan menggunakannya dalam aplikasi yang berbeza.

Hari ini kami mengumumkan keluaran rangka kerja pengguna sumber terbuka untuk membina aplikasi beban tinggi. Bagi kami, ini adalah cara penting untuk berkongsi pengalaman dalam membangunkan perkhidmatan mikro yang telah kami kumpulkan. Berikut ialah pautan ke repositori GitHub dengan kod sumber, dokumentasi, sampel, templat untuk mencipta perkhidmatan anda sendiri (dengan persekitaran CI dikonfigurasikan, bina dan ujian), dan perkhidmatan konfigurasi dinamik. Semua ini dikeluarkan di bawah lesen Apache 2.0.

Perkhidmatan mikro adalah autonomi, jadi aplikasi berdasarkan seni bina sedemikian mudah dikemas kini dan menambah ciri baharu padanya. Oleh itu, perkhidmatan mikro untuk mencari pemandu untuk pesanan Teksi boleh digunakan untuk tugas yang serupa, contohnya, mencari kurier untuk memenuhi pesanan Penghantaran Yandex. Perkara yang sama boleh dilakukan dengan pengiraan masa ketibaan pemandu atau kurier dan banyak tugas lain.

Rangka kerja ini pada asalnya dicipta dengan penekanan pada kebolehpercayaan dan kemudahan, dan di dalamnya menyediakan semua yang anda perlukan untuk pembangunan, diagnostik, pemantauan, penyahpepijatan dan percubaan. Contohnya, pengguna mencadangkan cara membetulkan ralat pada peringkat binaan, tahu cara bekerja dengan pangkalan data yang berbeza, menukar parameter dengan cepat, dsb.

Mengenai komposisi, disebutkan bahawa pemacu untuk kerja tak segerak dengan DBMS disertakan (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), pelanggan dan pelayan yang berfungsi secara tak segerak untuk pelbagai protokol (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitif peringkat rendah untuk mengurus penyegerakan dan akses kepada keupayaan sistem serta komponen peringkat tinggi untuk berfungsi dengan caching, tugasan, kunci yang diedarkan, pengesanan, metrik, statistik dan data dalam format JSON/YAML/BSON, serta ia menyokong perubahan konfigurasi perkhidmatan dengan cepat, tanpa menghentikannya.

Adapun keburukan seni bina monolitik perkara berikut disebut:

  • Penyatuan semua kod dalam monolit. Dengan asas kod yang besar, pembinaan dan ujian boleh mengambil masa berjam-jam, dan penggunaan boleh mengambil masa sepanjang hari.
  • Interaksi rapat bahagian yang berlainan kod. Anda perlu menghabiskan banyak usaha untuk semakan kod supaya antara muka ke bahagian monolit yang berbeza tidak menjadi kucar-kacir.
  • Kerapuhan. Perubahan dalam satu modul boleh memecahkan modul lain.
  • Bidang tanggungjawab yang kabur. Semasa proses pembangunan, banyak bahagian kod digeneralisasikan, mula digunakan oleh pasukan yang berbeza, dan ini bagus. Tetapi akibatnya, tidak jelas siapa yang bertanggungjawab untuk modul yang dihasilkan: pengarang pertama; mereka yang membuat suntingan terbanyak; atau mereka yang paling aktif menggunakan modul dalam kod.

Sebelum ini, Yandex memindahkan teknologi utamanya yang lain dalam bentuk projek terbuka, contohnya, sistem pengurusan pangkalan data yang diedarkan YDB, yang mampu memproses berjuta-juta permintaan sesaat, serta perpustakaan pembelajaran mesin CatBoost, yang digunakan Yandex dalam Carian dan lain-lain. perkhidmatan.

Akhirnya bagi mereka yang berminat untuk mengetahui lebih lanjut mengenainyaSila ambil perhatian bahawa Userver kini disokong untuk Ubuntu, Debian, Fedora, Arch, Gentoo, sistem macOS, x86, x86_64, AArch64, Seni bina lengan, GCC 8+ dan Clang 9+ penyusun, piawaian C++17, C+ +20, C ++23.

Kod pengguna ditulis dalam C++ dan Ia terbuka di bawah lesen Apache 2.0 dan boleh dirujuk daripada pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.