大量のリクエスト/秒を処理する必要があるJavaでWebサービスを作成しています。一般的なフローは次のようになります。
- Webサービスがクライアントからリクエストを受信する
- クライアントに「ポーリングを続ける」応答を返します
- 別のWebサービス(または複数のサービス)を呼び出し、それらが応答するのを待ちます(タイムアウト付き)
- クライアントは、応答を受信するまで(タイムアウト付き)、Webサービスをポーリングします
インターネットで調べてみると、Webサービスを作成するための2つの一般的なアプローチが見つかりました。
- リクエストごとにスレッドを生成します
- Reactorパターンを使用します(中央ディスパッチャースレッドはIOイベントに応答します)
どのアプローチが一般的に優れているかについての推奨事項はありますか?また、各アプローチの長所/短所は何ですか?例へのポインタもいただければ幸いです。