2012-02-04 9 views
3

Webサーバーの開発におけるさまざまなアプローチは何ですか? (1)マルチスレッド(2)イベントループがあると思いますが、他に何かありますか?各アプローチの長所と短所は何ですか?あなたはいつそれぞれを使いますか?それぞれの近似に対して特定のimplをリストできますか?Webサーバーの開発におけるさまざまなアプローチは何ですか?

答えて

0

ノンブロッキングI/Oを追加する必要があります。 Nettyをご覧ください。

+1

(通常は)イベントループとnioが一緒になります... – DuduAlul

4

異なるアプローチが可能:

  1. シングルスレッド:すべての接続が 接続およびプロセスについては、「リッスン」と待っては をrequests.Itという単一のスレッドによって処理されますが、実装が簡単であるが、それはありますそれは は一度

  2. マルチスレッドでの要求にサービスを提供できるよう、ほとんど役に立たないサーバー:サーバーが要求をリッスンし、各着信 要求はit.Soに各クライアントを処理するために、新しいスレッドに割り当てられている 接続は専用のスレッドで処理されます。 ( 1とは違って)このアプローチは、クライアント要求の同時処理をサポートしていますが、それぞれの新しい要求がサーバー で新しいスレッドを作成し、これは、サーバが 制限

  3. にヒットするresources.Eventuallyがかかるので、うまくない 規模を行います
  4. マルチスレッドプール:(2)と同じ考え方ですが、新しい着信要求を処理するための新しい スレッドを作成する代わりに、スレッドプール からのスレッドが使用されます。スレッドは、後で の再利用のために作成され、プールに置かれます。これは、複数のクライアント要求をサポートするうえで非常に適しており、 標準アプローチです。 Tomcatはこのように動作します。

  5. イベントキュー:各受信要求はキューに入れられ、 はキューの要求を処理するバックグラウンドスレッドによって処理されます。それは ノンブロッキングであり、このタイプの非同期処理もまた のスケールになります。正直なところ私はそれが のパフォーマンスで(3)よりも良いかどうかわかりません。これはTomcatがこれを使用して設定できると思います NIOアーキテクチャ

0

G-WANミックスのようないくつかのサーバーマルチスレッド・プールイベントキュー、サーバは多くの接続を処理各スレッドでCPUコアを飽和させます。

私はこのプロジェクトの開発に携わっています。

関連する問題