Yandexは高負荷アプリケーションを作成するためのユーザーフレームワークのコードを公開しました

Yandex は、非同期モードで動作する高負荷アプリケーションを C++ で作成できる Userver フレームワークのソース コードを公開しました。 このフレームワークは Yandex レベルの負荷でテストされており、Yandex Go、Lavka、デリバリー、マーケット、フィンテック プロジェクトなどのサービスで使用されています。 ユーザーのコードは C++ で書かれており、Apache 2.0 ライセンスの下でオープンソース化されています。

ユーザーサーバーは、マイクロサービス アーキテクチャを使用したアプリケーションの開発に最適です。 当初、このフレームワークは Yandex Taxi 用に開発されました。その助けを借りて、チームはモノリシック アプリケーションから、個別の独立したコンポーネント (マイクロサービス) を開発して、それらをさまざまなアプリケーションで使用できるアーキテクチャに切り替えました。 マイクロサービスは自律型であるため、同様のアーキテクチャに基づくアプリケーションは簡単に更新して新しい機能を追加できます。 したがって、タクシーの注文のドライバーを見つけるためのマイクロサービスは、たとえば、Yandex Delivery の注文を満たす宅配業者を見つけるなど、同様のタスクに使用できます。 ドライバーや宅配便の到着時間の計算やその他多くのタスクでも同じことができます。

このフレームワークは当初、信頼性と利便性を重視して作成され、その内部には開発、診断、モニタリング、デバッグ、実験に必要なすべてが提供されています。 たとえば、userver は、コンパイル段階でエラーを修正する方法、さまざまなデータベースを操作できる方法、オンザフライでパラメータを変更する方法などを提案します。 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 は他の主要テクノロジーをオープン プロジェクトの形式に移行しました。たとえば、XNUMX 秒あたり数百万のリクエストを処理できる分散データベース管理システム YDB や、Yandex が検索などで使用する CatBoost 機械学習ライブラリなどです。サービス。

出所: オープンネット.ru

コメントを追加します