Yandex, C++'da uygulamalar oluşturmak için bir çerçeve olan Userver'ın kaynak kodunu yayınladı

Yandex kaynak kodunu yayınladı çerçevenin kullanıcı görünümü, zaman uyumsuz modda çalışan yüksek düzeyde yüklü C++ uygulamaları oluşturmanıza olanak tanır. Çerçeve Yandex düzeyindeki yüklemelerde test edilmiştir Yandex Go, Lavka, Teslimat, Market ve fintech projelerinde kullanılmaktadır.

kullanıcı görünümü bir mikro hizmet mimarisine sahip uygulamalar geliştirmek için en uygunudur. Başlangıçta, işaretveya Yandex Taksi için geliştirildi, onun yardımıyla ekip, monolitik bir uygulamadan ayrı bağımsız bileşenler (mikro hizmetler) geliştirmenize ve bunları farklı uygulamalarda kullanmanıza izin veren bir mimariye dönüştü.

Bugün, yüksek yük uygulamaları oluşturmak için açık kaynak kullanıcı çerçevesinin piyasaya sürüldüğünü duyuruyoruz. Bizim için bu, biriktirdiğimiz mikro hizmetleri geliştirme deneyimini paylaşmanın önemli bir yoludur. Kaynak kodu, belgeler, örnekler, kendi hizmetlerinizi oluşturmak için bir şablon (CI yapılandırılmış, derleme ve test ortamı ile) ve dinamik bir yapılandırma hizmeti içeren bir GitHub deposuna bağlantı burada. Bütün bunlar Apache 2.0 lisansı altında yayınlandı.

Mikro hizmetler özerktir, dolayısıyla böyle bir mimariye dayalı bir uygulamanın güncellenmesi ve ona yeni özellikler eklenmesi kolaydır. Bu nedenle, Taksi siparişleri için bir sürücü bulmaya yönelik mikro hizmet, örneğin Yandex Teslimat siparişlerini yerine getirmek için bir kurye bulmak gibi benzer bir görev için kullanılabilir. Aynı şey şoförün veya kuryenin varış saatinin hesaplanması ve diğer birçok görev ile yapılabilir.

Çerçeve başlangıçta güvenilirlik ve rahatlık vurgulanarak oluşturulmuştur. ve içinde geliştirme, tanılama, izleme, hata ayıklama ve deneme için ihtiyacınız olan her şeyi sağlar. Örneğin, kullanıcı, derleme aşamasında hataların nasıl düzeltileceğini önerir, farklı veritabanlarıyla nasıl çalışacağını bilir, parametreleri anında değiştirir, vb.

Kompozisyonla ilgili olarak, şunlardan bahsedilmektedir: DBMS ile asenkron çalışma için sürücüler dahildir (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), çeşitli protokoller (HTTP, HTTPS, GRPC, TCP, UDP, TLS) için asenkron olarak çalışan istemciler ve sunucular, senkronizasyonu yönetmek için düşük seviyeli ilkeller ve sistem yeteneklerine erişimin yanı sıra önbelleğe alma, görevler, dağıtılmış kilitler, izleme, ölçümler, istatistikler ve JSON/YAML/BSON formatlarındaki verilerle çalışmak için üst düzey bileşenler ve ayrıca hizmet yapılandırmasını durdurmadan anında değiştirmeyi destekler.

dezavantajlara gelince monolitik mimarinin aşağıdakilerden bahsedilir:

  • Bir monolit içindeki tüm kodun konsolidasyonu. Geniş bir kod tabanıyla, oluşturma ve test etme saatler sürebilir ve dağıtım tüm gün sürebilir.
  • Kodun farklı bölümlerinin yakın etkileşimi. Monolitin farklı bölümlerine olan arayüzlerin bir karmaşa haline gelmemesi için kod incelemeleri üzerinde çok çaba harcamanız gerekir.
  • Kırılganlık. Bir modüldeki değişiklik başka bir modülü bozabilir.
  • Bulanık sorumluluk alanları. Geliştirme sürecinde kodun birçok bölümü genelleşir, farklı ekipler tarafından kullanılmaya başlanır ve bu iyidir. Ama sonuç olarak ortaya çıkan modülden kimin sorumlu olduğu belli değil: ilk yazarlar; en çok düzenlemeyi yapanlar; veya koddaki modülü en aktif olarak kullananlar.

Daha önce Yandex, diğer önemli teknolojilerini, örneğin, saniyede milyonlarca isteği işleyebilen YDB dağıtılmış veritabanı yönetim sistemi ve Yandex'in Arama ve diğerlerinde kullandığı CatBoost makine öğrenimi kitaplığı gibi açık projeler biçiminde aktardı. Hizmetler.

Nihayet bunun hakkında daha fazla bilgi edinmek isteyenler içinUserver'ın şu anda Ubuntu, Debian, Fedora, Arch, Gentoo, macOS sistemleri, x86, x86_64, AArch64, Arm mimarileri, GCC 8+ ve Clang 9+ derleyicileri, C++17 standartları, C+ +20, C için desteklendiğini lütfen unutmayın. ++23.

Kullanıcı kodu C++ ile yazılmıştır ve Açık Apache 2.0 lisansı altında ve şuradan danışılabilir: aşağıdaki bağlantı.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.