高いスケーラビリティへの1つのアプローチは、ネットワーク負荷分散を使用して、処理負荷を複数のサーバー間で分割することです。
このアプローチが提示する1つの課題は、サーバーが状態を認識する場所であり、ユーザーの状態を「セッション」に保存します。
この問題の1つの解決策は、「スティッキーセッション」(別名「セッションアフィニティ」)です。この場合、各ユーザーは単一のサーバーに割り当てられ、ユーザーの状態データはセッションの期間中そのサーバーに排他的に含まれます。
「スティッキーセッション」アプローチの長所と短所は何ですか?あなたはそれを使用していますか、使用している場合は満足していますか?
長所:
短所:
ただし、サーバーローカルセッション状態を使用する必要がある場合は、スティッキーセッションを使用することをお勧めします。また、サーバーローカルセッション状態を使用しない場合でも、キャッシュ使用率に関しては、スティッキ性に利点があります(上記を参照)。 IPアドレスは単一のセッション中に変化する可能性があるため(たとえば、有線ネットワークとワイヤレスネットワーク間でのラップトップのドッキングなど)、ロードバランサーはHTTP Cookie(IPアドレスだけでなく)を調べてスティッキ性を判断できる必要があります。
さらに良いことに、Webサーバーでセッション状態を使用しないでください!セッション状態が失われるのが非常に困難な場合(ショッピングカートなど)、それを中央データベースに保存し、古いセッションを定期的に消去します。セッション状態が重要ではない場合(ユーザー名やアバターのURLなど)、Cookieに貼り付けます。Cookieに過剰なデータを入れていないことを確認してください。
Railsの最新バージョンでは、上記の理由により、デフォルトでセッション変数がCookieに保存されます。他のWebフレームワークには、「cookieに保存」オプションや「DBに保存」オプションがある場合があります。