Inilabas ng Yandex ang source code ng Userver, isang framework para sa paglikha ng mga app sa C++

Nai-publish ng Yandex ang source code ng frame view ng gumagamit, na nagbibigay-daan sa iyong lumikha ng mataas na load na C++ na mga application na gumagana sa asynchronous mode. Ang kwadro ay nasubok sa mga pag-upload sa antas ng Yandex at ginagamit sa mga serbisyo tulad ng Yandex Go, Lavka, Delivery, Market at mga proyekto ng fintech.

view ng gumagamit ito ay pinakaangkop para sa pagbuo ng mga application na may microservice architecture. Sa una, ang markao binuo para sa Yandex Taxi, sa kanyang tulong, ang koponan ay nagbago mula sa isang monolitikong aplikasyon patungo sa isang arkitektura na nagbibigay-daan sa iyong bumuo ng hiwalay na mga independiyenteng bahagi (microservices) at gamitin ang mga ito sa iba't ibang mga aplikasyon.

Ngayon ay inaanunsyo namin ang paglabas ng open source na framework ng user para sa pagbuo ng mga application na may mataas na load. Para sa amin, ito ay isang mahalagang paraan upang ibahagi ang karanasan sa pagbuo ng mga microservice na aming naipon. Narito ang isang link sa isang GitHub repository na may source code, dokumentasyon, mga sample, isang template para sa paggawa ng sarili mong mga serbisyo (na may CI na na-configure, bumuo at sumubok na kapaligiran), at isang serbisyo ng dynamic na configuration. Ang lahat ng ito ay inilabas sa ilalim ng lisensya ng Apache 2.0.

Ang mga microservice ay nagsasarili, kaya ang isang application na batay sa naturang arkitektura ay madaling i-update at magdagdag ng mga bagong tampok dito. Samakatuwid, ang microservice para sa paghahanap ng driver para sa mga order ng Taxi ay maaaring gamitin para sa isang katulad na gawain, halimbawa, paghahanap ng isang courier upang matupad ang mga order ng Yandex Delivery. Ang parehong ay maaaring gawin sa pagkalkula ng oras ng pagdating ng driver o courier at marami pang ibang gawain.

Ang balangkas ay orihinal na nilikha na may diin sa pagiging maaasahan at kaginhawahan, at sa loob nito ay nagbibigay ng lahat ng kailangan mo para sa pag-develop, diagnostic, pagsubaybay, pag-debug, at pag-eeksperimento. Halimbawa, ang userver ay nagmumungkahi kung paano ayusin ang mga error sa yugto ng pagbuo, alam kung paano magtrabaho sa iba't ibang mga database, baguhin ang mga parameter sa mabilisang, atbp.

Tungkol sa komposisyon, nabanggit na ang mga driver para sa asynchronous na trabaho sa DBMS ay kasama (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), mga kliyente at server na gumagana nang asynchronous para sa iba't ibang mga protocol (HTTP, HTTPS, GRPC, TCP, UDP, TLS), mababang antas na primitive upang pamahalaan ang pag-synchronize at pag-access sa mga kakayahan ng system pati na rin ang mataas na antas na mga bahagi upang gumana sa pag-cache, mga gawain, ipinamahagi na mga lock, pagsubaybay, mga sukatan, istatistika, at data sa mga format ng JSON/YAML/BSON, at sinusuportahan nito ang pagbabago ng configuration ng serbisyo sa mabilisang, nang hindi ito tumitigil.

Tungkol naman sa mga disadvantages ng monolitikong arkitektura ang mga sumusunod ay binanggit:

  • Pagsasama-sama ng lahat ng code sa loob ng isang monolith. Sa malaking code base, ang pagbuo at pagsubok ay maaaring tumagal ng ilang oras, at ang deployment ay maaaring tumagal ng isang buong araw.
  • Malapit na pakikipag-ugnayan ng iba't ibang bahagi ng code. Kailangan mong gumastos ng maraming pagsisikap sa mga pagsusuri ng code upang ang mga interface sa iba't ibang bahagi ng monolith ay hindi maging gulo.
  • Fragility. Maaaring masira ng pagbabago sa isang module ang isa pang module.
  • Malabong lugar ng responsibilidad. Sa panahon ng proseso ng pagbuo, maraming bahagi ng code ang nag-generalize, nagsimulang gamitin ng iba't ibang mga koponan, at ito ay mabuti. Ngunit bilang resulta, hindi malinaw kung sino ang may pananagutan sa resultang modyul: ang mga unang may-akda; ang mga gumawa ng pinakamaraming pag-edit; o ang mga pinaka-aktibong gumagamit ng module sa code.

Noong nakaraan, inilipat ng Yandex ang iba pang mga pangunahing teknolohiya nito sa anyo ng mga bukas na proyekto, halimbawa, ang YDB distributed database management system, na may kakayahang magproseso ng milyun-milyong kahilingan sa bawat segundo, pati na rin ang CatBoost machine learning library, na ginagamit ng Yandex sa Search at iba pa. serbisyo.

Sa wakas para sa mga interesadong malaman ang tungkol ditoPakitandaan na ang Userver ay kasalukuyang sinusuportahan para sa Ubuntu, Debian, Fedora, Arch, Gentoo, macOS system, x86, x86_64, AArch64, Arm architecture, GCC 8+ at Clang 9+ compiler, C++17 standards, C+ +20, C ++23.

Ang userver code ay nakasulat sa C++ at Ito ay bukas sa ilalim ng lisensya ng Apache 2.0 at maaaring konsultahin mula sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.