Cloudflareは、Rust言語で安全で高性能なネットワークサービスを開発するために設計されたPingora 0.4フレームワークのリリースを公開しました。 Pingora を使用して構築されたプロキシは、Nginx の代わりに Cloudflare コンテンツ配信ネットワークで 40 年以上使用されており、2.0 秒あたり XNUMX 万件を超えるリクエストを処理しています。コードは Rust で書かれており、Apache XNUMX ライセンスに基づいて公開されています。
Pingora の主な特徴:
- HTTP/1 および HTTP/2 (計画では HTTP/3) のサポートに加え、独自のプロトコルまたは UDP/TCP を使用してサービスを作成する機能。
- 非同期モードでのリクエストのマルチスレッド処理のサポート。
- リクエスト処理のさまざまな段階を管理できるだけでなく、リクエストと応答の変更、リダイレクト、ブロック、ログ記録を可能にするコールバック ハンドラとフィルタをアタッチする機能。
- gRPC と WebSocket のプロキシ。
- 接続可能なロードバランサー。
- 再起動せずに構成を変更する機能。
- 接続を切断せずにアプリケーション コードを更新するためのサポート。
- 障害時の負荷切り替え手段(フェイルオーバー)。
- さまざまな監視およびログ システム (Syslog、Prometheus、Sentry、OpenTelemetry) との統合。
- TLS 暗号化のサポート (OpenSSL、BoringSSL、または Rustls を使用)。
- HTTP プロキシの作成、ネットワーク プロトコルの操作、HTTP ヘッダーの解析、トラフィックのアカウンティングと制限、ロード バランシング、Ketama 分散ハッシュ テーブルの操作、RAM でのキャッシュの維持、タイムアウトの非同期処理を行うための既製の Rust パッケージ。
新しいバージョンの変更点には次のようなものがあります。
- aws-lc-rs に基づく暗号プロバイダーと BoringSSL に基づくリング ライブラリを使用した Rustls 暗号化ライブラリの初期サポート。
- Windows プラットフォームの実験的サポート。
- ダミー TLS モード。実際の TLS 実装を使用できない状況で使用できます。
- gRPC-webクライアントのリクエストを次のリクエストに変換するgRPC-webモジュールのサポートを追加しました。 サーバ gRPC。
- 同じネットワーク ポート上で H2C (ベア TCP 上の HTTP/2、暗号化なし) および HTTP/1 接続を処理する機能を提供します。
- connect() 関数の独自の実装を接続して、ネットワーク接続を確立するときの動作を変更する機能が追加されました。たとえば、ソケットの追加オプションを設定したり、テスト中にエラーをシミュレートしたりできます。
- 「Expect: 100- continue」ヘッダーを持つ応答など、プロキシ時に情報応答を無視する機能が提供されました。
- gzip 圧縮された応答の解凍のサポートが追加されました。
- 監視を目的としてバックエンド状態のアカウンティングを実装しました。
- 一定範囲のローカル ポートにバインドする機能が追加されました。
出所: オープンネット.ru
