JavaServer Faces がサーバー側で本質的にステートフルであることを考えると、JSF 2.0 アプリケーションを水平方向にスケーリングするにはどのような方法が推奨されますか?
アプリケーションが複数の JSF サーバーを実行する場合、次のシナリオを想像できます。
- スティッキー セッション: 特定のセッションに一致するすべてのリクエストを同じサーバーに送信します。
- 質問:これを実現するために一般的に使用されているテクノロジーは何ですか?
- 問題:サーバー障害の結果、セッションが失われます...そして、特に新しく開始する場合 (既存のアプリケーションをスケーリングしようとしない場合) は、一般的に壊れやすいアーキテクチャのように見えます。
- 状態 (セッション) レプリケーション: クラスタ内のすべての JSF サーバーで JSF 状態をレプリケートします。
- 質問:これを実現するために一般的に使用されているテクノロジーは何ですか?
- 問題:スケーリングしない。クラスタの合計メモリ = 最小サーバーの合計メモリ
- 外部リソース (たとえば、非常に高速なメモリ内データベースを実行している別のサーバー) にその状態を格納するように (構成を介して) JSF に指示し、アプリケーションの状態が必要なときに JSF サーバーからそのリソースにアクセスしますか?
- 質問:これは可能ですか?
- ステートレスになるように (構成を介して) JSF に指示しますか?
- 質問:これは可能ですか?
[編集]
スティッキー セッションに関する Ravi の提案に応じて更新