Yandex, yüksek yüklü uygulamalar oluşturmak için kullanıcı çerçevesinin kodunu açtı

Yandex, C++'da eşzamansız modda çalışan yüksek yüklü uygulamalar oluşturmanıza olanak tanıyan Userver çerçevesinin kaynak kodunu yayınladı. Çerçeve, Yandex düzeyindeki yükler altında test edilmiş ve Yandex Go, Lavka, Delivery, Market gibi hizmetlerde ve fintech projelerinde kullanılmaktadır. Kullanıcının kodu C++ ile yazılmıştır ve Apache 2.0 lisansı altında açık kaynaklıdır.

Userver, mikro hizmet mimarisine sahip uygulamalar geliştirmek için en uygunudur. Başlangıçta, çerçeve 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 olanak tanıyan bir mimariye geçti. Mikro hizmetler özerktir, dolayısıyla benzer mimariye dayalı bir uygulamanın güncellenmesi ve ona yeni özellikler eklenmesi kolaydır. Böylece, Taksi siparişleri için sürücü bulmaya yönelik mikro hizmet, benzer bir görev için kullanılabilir; örneğin, Yandex Teslimat siparişlerini yerine getirecek bir kurye bulmak. Aynı şey, bir sürücünün veya kuryenin varış zamanının hesaplanmasında ve diğer birçok görevde de yapılabilir.

Çerçeve başlangıçta güvenilirlik ve kolaylık vurgulanarak oluşturuldu ve içinde geliştirme, teşhis, izleme, hata ayıklama ve deneyler için gerekli her şey sağlandı. Örneğin, kullanıcı derleme aşamasında hataların nasıl düzeltileceğini önerir, farklı veritabanlarıyla çalışabilir, parametreleri anında değiştirebilir vb. Ubuntu, Debian, Fedora, Arch, Gentoo, macOS sistemleri, x86, x86_64, AArch64, Arm mimarileri, GCC 8+ ve Clang 9+ derleyicileri, C++17, C++20, C++23 standartları için beyan edilen destek.

Kompozisyon, DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL) ile eşzamansız çalışma için sürücüleri, çeşitli protokoller için eşzamansız çalışan istemcileri ve sunucuları (HTTP, HTTPS, GRPC, TCP, UDP, TLS), senkronizasyon yönetimi için düşük seviyeli ilkelleri içerir. ve işletim sisteminin özelliklerinin yanı sıra önbellek, görevler, dağıtılmış kilitler, izleme, metrikler, istatistikler ve JSON/YAML/BSON formatlarındaki verilerle çalışmaya yönelik üst düzey bileşenlere erişim. Servis konfigürasyonunun anında, durmadan değiştirilmesini destekler.

Daha önce Yandex, diğer önemli teknolojilerini açık projeler biçimine aktarmıştı; örneğin, saniyede milyonlarca isteği işleyebilen dağıtılmış veritabanı yönetim sistemi YDB'nin yanı sıra, Yandex'in Arama ve diğer uygulamalarda kullandığı CatBoost makine öğrenimi kitaplığı. Hizmetler.

Kaynak: opennet.ru

Yorum ekle