Yandex کد منبع فریم ورک Userver را منتشر کرده است که به شما امکان می دهد برنامه های کاربردی با بار بالا در C++ ایجاد کنید که در حالت ناهمزمان کار می کنند. این چارچوب تحت بارهای سطح Yandex آزمایش شده است و در خدماتی مانند Yandex Go، Lavka، Delivery، Market و پروژه های فین تک استفاده می شود. کد کاربر به زبان C++ نوشته شده و تحت مجوز آپاچی 2.0 منبع باز است.
Userver برای توسعه برنامه های کاربردی با معماری میکروسرویس مناسب است. در ابتدا، این چارچوب برای Yandex Taxi توسعه داده شد، و با کمک آن تیم از یک برنامه یکپارچه به معماری تبدیل شد که به شما امکان می دهد اجزای مستقل جداگانه (microservices) را توسعه دهید و از آنها در برنامه های مختلف استفاده کنید. میکروسرویس ها مستقل هستند، بنابراین یک برنامه کاربردی مبتنی بر معماری مشابه به راحتی به روز می شود و ویژگی های جدیدی به آن اضافه می شود. بنابراین، میکروسرویس برای یافتن راننده برای سفارشات تاکسی می تواند برای کار مشابهی استفاده شود - به عنوان مثال، پیدا کردن یک پیک برای انجام سفارشات تحویل Yandex. همین کار را می توان با محاسبه زمان رسیدن راننده یا پیک و بسیاری از کارهای دیگر انجام داد.
این فریم ورک در ابتدا با تاکید بر قابلیت اطمینان و راحتی ایجاد شد و در داخل آن، هر آنچه برای توسعه، تشخیص، نظارت، اشکال زدایی و آزمایش لازم است ارائه می شود. به عنوان مثال، کاربر نحوه رفع خطاها را در مرحله کامپایل پیشنهاد می کند، می تواند با پایگاه داده های مختلف کار کند، پارامترها را در لحظه تغییر دهد و غیره. پشتیبانی از سیستمهای Ubuntu، Debian، Fedora، Arch، Gentoo، macOS، x86، x86_64، AArch64، معماریهای Arm، کامپایلرهای GCC 8+ و Clang 9+، استانداردهای C++17، C++20، C++23.
این ترکیب شامل درایورهایی برای کار ناهمزمان با DBMS (MongoDB، PostgreSQL، Redis، ClickHouse، MySQL)، کلاینتها و سرورهای کار ناهمزمان برای پروتکلهای مختلف (HTTP، HTTPS، GRPC، TCP، UDP، TLS)، اولیههای سطح پایین برای مدیریت همگامسازی است. و دسترسی به قابلیت های سیستم عامل و همچنین اجزای سطح بالا برای کار با کش، وظایف، قفل های توزیع شده، ردیابی، معیارها، آمار و داده ها در فرمت های JSON/YAML/BSON. از تغییر پیکربندی سرویس در لحظه، بدون توقف آن پشتیبانی می کند.
پیش از این، Yandex سایر فناوریهای کلیدی خود را به شکل پروژههای باز انتقال داد - به عنوان مثال، سیستم مدیریت پایگاه داده توزیع شده YDB، که قادر به پردازش میلیونها درخواست در ثانیه است، و همچنین کتابخانه یادگیری ماشینی CatBoost، که Yandex در جستجو و سایر موارد استفاده میکند. خدمات.
منبع: opennet.ru