0

ユーザーの状態を維持するために、Web サーバーは Session オブジェクトを作成し、それを一意の session_id に割り当てます。これは、単一サーバーのシナリオでは理にかなっています。しかし、各リクエストが異なるサーバーにヒットする可能性がある分散サーバー アーキテクチャではどうなるでしょうか。この Session オブジェクトは、異なる Web サーバー間でどのように共有されますか? 私が考えることができる 1 つの方法は、データベースに格納することですが、読み取りごとに余分な待ち時間が発生するため、非効率的です。

この問題を解決するために採用されているベスト プラクティスは何ですか?

4

1 に答える 1

1

これは、アプリケーションのアーキテクチャと、共有したいセッション情報の不足に大きく依存します。

URL 書き換えや Cookie によって非常に多くのことができる認証トークンを共有したいだけの場合。

より大きなオブジェクトを保存したい場合は、負荷分散されたアーキテクチャ (クラスター) を調べて決定する必要があります。もちろん、これらは広大なトピックであるため、ここですべてを説明することはできませんが、さらに調査できるように、私の経験からいくつかのヒントを提供できます。

  1. Sticky session:このアプローチでは、クライアントは負荷分散されたサーバーの 1 つに固執するため、常にそのサーバーのみによって処理されます。つまり、単一ノード サーバーで行う場合と同様に、すべてのセッションなどを管理します。
  2. Cluster topology:ノード クラスタを見て、それがサポートするトポロジと、相互にデータを共有できるかどうかを確認します。以前に構成しました: リングとスター。詳細については、この記事を参照してください。
  3. Database:これは、負荷分散された環境でオブジェクトを共有する最も簡単で古典的な方法の 1 つです。
  4. File System:データベースと非常によく似ており、NFS や AFS などの集中型ファイル システムを使用して、オブジェクトをシリアル化し、後で取得できます。
于 2013-07-20T13:23:01.337 に答える