1

私は現在、システムを構成する複数のサーバーがある設計段階にあり、各サーバーがアクセスできるようにセッション情報を保存する最良の方法を見つける必要があります。セッション情報は基本的に、セッション ID の GUID とユーザー グループ名のリストです。

主なクライアント アプリケーションは、Web アプリとモバイル アプリです。

私は次の構成を持っています:

すべてのユーザーがログインし、ユーザーに対応するユーザー グループ情報がセッション オブジェクトに入力されるマスター サーバー。ログインのピーク時には、最大 10,000 人のユーザーがいる可能性があります。

アーカイブ コンテンツを含むスレーブ サーバーとほとんどのユーザーは、UI を介してスレーブ サーバーと直接通信します。スレーブサーバーは、マスターサーバーで最初に決定されたセッション情報を必要とします。

1 つのオプションは、各ログインのセッション データをスレーブ サーバーに移動し、それをスレーブにキャッシュすることでした。これにより、各スレーブは独立して動作し、マスター サーバーを参照する必要がなくなります。

もう1つのオプションは、セッション情報を含む中央データベースを持つことですが、データベースは各サーバー上にあるため(データベースサーバーとして機能する別のマシンはありません)、各スレーブはマスターに戻るリモート接続文字列を持ちますサーバーデータベース。スレーブサーバーからリモートでデータベースにクエリを実行する必要がある場合、これにより速度が低下することは間違いありません。

次に、セッションをクリーンアップする必要がある状況がありますが、通常、ログインのピーク時に 25 MB を超えるデータは期待できません。

最大 10 台のスレーブ サーバーを使用できます。

最善の解決策は何ですか?

4

1 に答える 1

1

IIS 7.0 については、2 つのアプローチ (セッション サーバーまたは SQL サーバーの使用) を概説する Technet 記事を次に示します。

http://technet.microsoft.com/en-us/library/cc754032(v=ws.10).aspx

10 個の個別のデータベースを実行している 10 個の Web サーバーを実行する必要があるかどうか疑問に思います。確かに、私はあなたが書いているアプリケーションについて何も知りません。それには十分な理由があるかもしれません。

これが私がそれをどのように見ているかです(あなたのアプリケーションに関する私の認められた限られた知識で)。

10,000 人の同時ユーザーが 1 つの認証サーバーにアクセスすると、10 サーバーのうちの 1 つ (またはそれ以上?) にリダイレクトされる可能性があり、ボトルネックが発生する可能性があります。過半数がいずれかのサーバーにアクセスした場合はどうなりますか? 多数の人が同時にログインしようとした場合はどうなりますか?

別のアーキテクチャでの刺し傷を次に示します。

                           [LoadBalancer]
    -------------------------------------------------------------------------
    [WebServer]   [WebServer]   [WebServer]  -------------> [SessionServer]
                           [LoadBalancer]    
    -------------------------------------------------------------------------
    [AppServer]   [AppServer]   [AppServer]   [AppServer] -------^

    -------------------------------------------------------------------------
    [DBServer]
    [DBServer](backup)

私は、これらがどのクラスのマシンであるかを知らないと書いています。DB サーバーには適さない場合があります。

ええと、ここはまだ早いので、まだ 2 杯目のコーヒーを飲んでいます。それは役に立つかもしれないし、役に立たないかもしれません。

于 2013-01-29T12:55:18.477 に答える