多くのブロッキングVS単一の非ブロッキングワーカー
接続を受け入れるHTTPサーバーがあり、ヘッダーが完全に送信されるのを何らかの方法で待機していると仮定します。それを実装する最も一般的な方法は何ですか、それ以外の長所と短所は何ですか。私はこれらのことしか考えられません: 多くのブロッキングワーカーは、次の理由で優れています。 それはより敏感です。 新しい接続を導入する方が簡単です(ワーカーが同期リストに追加できるようになるまで外部の人が待つのではなく、自分で接続を取得します)。 CPU使用率は、接続数の増減に応じて自動的に(追加の作業なしで)バランスをとります。 CPU使用量が少ない(ブロックされたスレッドは実行ループから除外され、クライアント間をジャンプするためのロジックは必要ありません)。 単一の非ブロッキングワーカーは、次の理由で優れています。 より少ないメモリを使用します。 レイジークライアント(サーバーへの接続とヘッダーの送信が遅い、またはまったく送信しない)に対する脆弱性が低い。 おそらくお分かりのように、私の意見では、複数のワーカースレッドは全体として少し優れたソリューションのようです。それに関する唯一の問題は、そのようなサーバーを攻撃する方が簡単であることです。 編集(より多くの研究): 私がウェブで見つけたいくつかのリソース(数千のスレッドとブロッキングI / O-Javaサーバーを記述する古い方法は、 Paul Tymaによって再び(そしてより良く)新しくなりました)ブロッキングアプローチは一般により良いが私はまだ偽の接続を処理する方法を本当に知りません。 PSタスクにいくつかのライブラリまたはアプリケーションを使用することをお勧めしません。私は、それが機能するのではなく、実際にどのように機能するか、または機能する可能性があるかを知りたいと思っています。 PSS私はロジックを複数の部分に分割しており、これはHTTPヘッダーの受け入れのみを処理します。それらを処理しません。