No.1 Order Material Provide Community (CDN) プロバイダーとして、ArvanCloud は 1 秒間に何千ものリクエストを処理します。何千もの移動ドメイン。 すべての質問は、ドメインの構成に従って、モジュールの展開のプロットによって処理されます。 大量のファイルを管理することは、決して難しいことではありません。 ArvanCloud は、最高の処理効率を確実に実現するために、きらめく構造と雰囲気に適したソリューションを使用することで対応しました.
有用なリソースの使用を最適化し、高レベルの効率を停止する記述では、nginx はすべての論理 CPU コアごとのワーカー コースを持つ機能で構成されます。 そして、これらのワーカーは、あらゆる種類のものから独立して動作するように設計されています。 すべてのワーカーは、キューの検出に十分な所有権を持っており、接続の編成、応答の送信、接続のシャットダウンなど、起動から完了までの要求の処理に責任があります。 この方法論により、ウェブサイトとウェブ企業は、ポストヘイスト、雰囲気認定、および大量のトラフィックに対処する立場を確実に保護します.
Nginx ワーカーは、 SO_REUSEPORT
すべてのモジュールは、すべての質問の過程で特定の知識を必要とし、この知識は、すべてまたは 1 人のワーカーの間で共有されることを望んでいます。 この知識の原則は、構成と同様に集中的に教えられ、リードレプリカ更新の使用をシステムでブロックすることなく、ワーカー間で安心して共有できます (RCU) メカニズム。 反対に、Rate Limit カウンターのようなさまざまな形式のファイルは、偶然にも可能性があります。また、短い時間で継続的にやり取りを行うことで、効率的に共有できるように進めました。
IP アドレス 192.51.100.1 が ask を送信します。 さまざまなポート (ブラウザーの習慣) を持つ要求には、さまざまなハッシュが含まれているため、個別のワーカーに送信されます。 また、すべてのワーカーは、必要なすべてのモジュールを含む個別の自己完結型のコースです。 一方で、すべての質問が個別のワーカーに向けられているため、それらの間で知識を共有するメカニズムが必要です。 例として、Rate Limit モジュールでは、カウンター を共有する必要があります — これにより、特定の IP への要求が一定時間内に不要になります — .
当初は、Redis とさまざまな同一のツールを利用してこの知識を保存しようとしましたが、効率はもはや有利ではありませんでした。 このトピックに対処するために、共有メモリを承認しました。これにより効率が向上しましたが、安静は最適ではありませんでした。 真実は、DDoS 攻撃の初期段階のプロットごとの絶対的に最も実用的なプロットであり、無意識のうちに変更された変更可能な知識です。 現時点では、共有メモリのセクションでのロックの使用は、すべての質問に影響を与え、共有メモリ構造 (ブロッキング/ロックフリー) のトピックには影響しません。
前述のように、カーネルのデフォルトの負荷安定性図 — ソースとターゲットの IP アドレスとポートのハッシュを計算する必要があります —
次はハードウェアの使用を最適化し、共有メモリの必要性をなくすために、説明のロード バランシング メカニズムを置き換えるという考えが以前はありました。 これは、UDP (カーネル モデル 4.5 から) および TCP (カーネル モデル 4.6 から)。これにより、カーネルのデフォルトの負荷分散方法を置き換えることができました。
私たちは、個別のフィンガープリントごとにワーカー間でパケットを配布することを決定しました。同じ IP アドレスは常に同じワーカーに接続します。 さらに、すべてのセキュリティ モジュールから共有メモリを排除し、ハードウェアの使用率を最適化するために、処理の責任を論理的なものから分離しました。
Nginxのソースコードを修正し、eBPFプログラムに接続するためのパッチを書きました
nginx の実行時にいつでも初期化される reuse_sockmap でリッスンされたソケットの配列を保留します。 socket search for
ベンチマーク: 1. 共有メモリ 2. eBPF ロード バランサー
2 つの状況を比較するベンチマークに合わせて:
第2ケース内とは言え、フォームが大きいほどリクエスト数が多いほどレスポンスに差が出るようなことはありません 認可された状態で、CDN の規模のプロバイダー プロバイダーであると同時に、 CPUコアの重みを均等に分散し、問題を常に画面に表示するシステムが必要です。 長命のTCPセッションは、負荷の不均衡の流行を引き起こす可能性があり、ウェイトバランスメカニズムまたはカーネルのポーリング習慣を調整すると同時に、この分布の均一性に二重に熱中し、解決策を見つけたいと思うかもしれません.さまざまな不測の事態のために。 さらに、これらの調整は、遅かれ早かれ、QUIC などのさまざまなプロトコルを混乱させることもなく、おそらく安らかなものになる可能性があります.