4

JSP とサーブレットを使用して、非常に単純な Java Web アプリケーションを開発しようとしています。

1)ページにテキスト ボックスと送信ボタンがあります
。2)ユーザーが John などの名前をテキスト ボックスに入力し、ボタンをクリックします
。3)文字列がサーブレットに転送されます
。4)の doPost メソッドで私のサーブレット、投稿された文字列変数にアクセスします
。5)使用する Web サービスには、引数を取り、引数と連結してsayHello返すメソッドがあります。6) Web サービスのメソッドを呼び出し、返された値を取得します。変数を作成し、これを JSP に転送します。JSP は基本的に. "Hello "
sayHelloHello John

2 つの質問があります。

1) フラッディング:サーブレットへのリクエストのフラッディングを回避するにはどうすればよいですか? どうすれば対処できますか?Web サービスに連絡して挨拶するためのスレッドを作成することを考えました。リクエストが到着したら、スレッドが実行中かビジーかを確認し、そうでない場合はリクエストを処理します。したがって、単位時間あたり最大 1 つの要求に応答することになります。それはどのように聞こえますか?

2) スケーラビリティ:今夜、1,000,000 万人が私の Web アプリにアクセスし、私のアプリに 10 回ずつ挨拶をさせると仮定します。このアプリが適切にスケーリングされるようにするにはどうすればよいですか? サーバーが依存しているハードウェア以外に、JSP/サーブレットの部分についてできることはありますか?

質問が一般的なものであることはわかっているので、できる限り詳細を提供しようとしました。徹底的で的確な回答をいただければ幸いです =)

前もって感謝します。

4

2 に答える 2

4

「スケーラブル」にするために、さまざまなことができます。

一つには、サーブレットの負荷が非常に小さいため、負荷が問題になる場所ではない可能性があります。Webサービスはです。ここでは、水平と垂直の2種類のスケーリングを提供できます。

水平スケーリングは、同じ速度でリクエストを処理する場合ですが、より多くのリクエストを処理できます。これは、負荷分散、F5またはその他のロードバランサーを介して提供され、Webアプリケーションを複数のWebサーバーで処理します。

垂直スケーリングとは、問題に対してより高速なプロセッサを投入することです。水平が良いです。

サービス自体の処理は、実際の作業が行われる場所であるため、スケーラビリティの障害点です。この場合、単純なサービスがあるため、サーブレットで行うのと同じことをWebサービスで行うことができます。しかし、問題が「より難しい」場合は、JMSを使用して非同期サービスを提供し始めます。これにより、サービスプロバイダーは要求を消費し、できるだけ早く回答を提供します。これにより、コンシューマーを追加する自然な場所が得られるため、JMSサービスがリクエストを処理できない場合は、別のコンシューマー(キューをリッスンしている別のサーバー)を追加します。それが追いつかない場合は、洗浄、すすぎ、繰り返します。

もちろん、この問題に対するクラウドソリューションもあります。私はGigaSpacesTechnologiesで働いています。これは、Webサービスの水平方向のスケーラビリティーのためのサービスを提供し、先ほど概説したソリューションよりもはるかに優れた仕事をしています。それがどのように機能するかを確認するには、http://www.youtube.com/watch?v=YTEqFzrfVssを参照してください

于 2011-05-15T11:35:22.600 に答える
2
  1. あなたのソリューションは洪水から一日を救うかもしれませんが、アプリケーションの可用性に非常に悪い影響を与えるでしょう. フラッディングの主な原因は、アプリケーションをブロックする悪意のある同じマシンからのリクエストが多すぎることです。したがって、セッション ID をスレッド ID に関連付けることをお勧めします。つまり、ユーザーのリクエストを一度に 1 つだけ処理します。次のものは、最初の処理が完了したときにのみ処理されます。

  2. @Joseph Ottingerによるソリューションを使用したい

于 2011-05-15T11:29:22.807 に答える