2

オンライン ユーザーをデータベース テーブルで追跡するか、メモリだけで追跡するかを決定しようとしています。サーバーが再起動されると、システムが起動するたびにテーブルを切り捨てる必要があるため、インメモリは私にとってはるかに簡単で理にかなっています。また、私のシステムの各ユーザーは連絡先 (他のユーザー) を追加でき、ユーザーがサインオンするたびに、そのユーザーが友達であるユーザーのリストを取得し、ユーザーがオンラインであることを示す signalR メッセージを送信します。したがって、このような場合、メモリからデータを取得する方がはるかに高速になると思いますが、スケールアウトするとどうなるかはわかりません。

4

3 に答える 3

3

このような場合、メモリからデータを取得する方がはるかに高速になると思います

時期尚早の最適化は諸悪の根源であるため、情報をデータベースに保持し、必要に応じて取得することをお勧めします。次に、メトリックを実行して、オンライン ユーザーの数がパフォーマンスの問題を示し始めた場合に変更を加えることができます。

于 2012-08-30T20:46:44.520 に答える
2

実稼働環境にサーバーを追加する必要がある場合は、セッションをデータベースに保持する必要があります。その結果、すべてのサーバーで共有できるように、オンライン ユーザーのリストをデータベースに含める必要があります。

于 2012-08-30T20:42:58.997 に答える
0

スケールアウトを開始する場合は、とにかくこの情報をサーバー間で共有する必要があるため、最初からデータベースに配置します。SignalRのリファレンスアプリケーションであるJabbRもこれを行うので、それほど悪くはありません。

于 2012-08-31T10:29:16.103 に答える