高可用性アプリケーションサーバーのアーキテクチャ設計は、主にステートレスなサービスの特性に基づいて、実際には、事業の状態は常に存在です。
トランザクションの電子商取引サイトでは、情報を購入する必要性は、ユーザーのショッピングカート、ユーザー要求がショッピングカートに商品の購入を増加されるたびに記録されます。
ソーシャルネットワーキングサイトでは、現在ログインしているユーザーを記録する必要があります。
コンテキストオブジェクトでこれらのWebアプリケーションを変更するために複数の要求を使用して参照されたセッション(セッション)をスタンドアローンの場合、セッションマネージャは、Webサーバー・コンテナに配備することができます。クラスタ環境では、負荷に起因する分散サーバーは、いずれかのアプリケーション・サーバーのクラスタに要求を分散するので、各要求はスタンドアローンのセッションよりも正確で得ることが可能であるとはるかに複雑なことを確認することがあります。
クラスタ環境で、セッション管理の主な手段は次のとおりです。
- セッションレプリケーション
- セッションバインディング(セッション粘着性)
- セッションサーバー
次に、我々は一つ一つを導入しました。
、セッションのコピー
サーバ間の同期のためのセッションは、各サーバは、すべてのユーザーのセッション情報を持って、ユーザーが任意のサーバーに要求することができます。
短所:
- あまりにも多くのメモリを取ります
- 同期プロセスは、ネットワーク帯域幅とサーバーのプロセッサ時間を消費します
二、セッション・バインディング
セッションバインディング(スティッキーセッション)は、スティッキーセッションとして知られています。ユーザーがサーバーのセッションに格納することができるように、ユーザは、同じサーバーにルーティングされるように、すべての要求は、ロードバランサを設定します。(本負荷分散サーバでは、このようなリバースプロキシ負荷分散として、HTTPプロトコル層で作業しなければなりません)
短所:
サーバーがダウンすると、そのサーバー上のすべてのセッションを失います。
三、セッションサーバー
従来のMySQL、Redisの又はMemcachedの使用このメモリデータベースを使用して、別個のセッション・データ・ストレージ・サーバを使用して。セッションサーバー・セッションによるこの一元管理。
このソリューションは、実際には、アプリケーションサーバの状態は、ステートレスとステートフルアプリケーションサーバーセッションのサーバーに分離され、その後、二つのサーバの異なる特性は、そのアーキテクチャを設計しました。
利点:スケーラブルで大規模なサイトを作るために、クラスタ化されたアプリケーションサーバーは通常、アプリケーションサーバは、ユーザのセッション情報を保存することができない、ステートレスのままにする必要があります。セッションサーバーのユーザーセッション情報は、このようにステートレスアプリケーションサーバーを確保し、別々に保存されます。
短所:アクセスコードを達成するためのセッション。
参考:
「大規模なWebサイトの技術フレームワーク」 - 李Zhihui
記事はまた、本からのイラストです