ASP.NET アプリケーションでSignalRを使用しています。私のアプリケーションが必要とするのは、さまざまなサーバーから更新されたグループ データをプレスすることです。SignalR のドキュメントによると、これを行うのは私の責任です。これは、1 つ以上のサーバーからデータを収集する外部サーバー/サービスを使用する必要があり、そのデータを 1 か所からクエリできることを意味します。
MemCachedは高速で、そこに格納する必要があるデータは揮発性であるため、最初はMemCachedが最適な候補であると考えました。問題は、コレクションを保存する必要があることです。たとえば、ユーザー ID を持つコレクション A を使用すると、2000 のユーザー ID を持つコレクション A と 40,000 の ID を持つコレクション B を持つことができます。問題は、このコレクションを更新し、id を削除して挿入する必要があることです。コマンドは複数のサーバーから開始され、コレクション全体を読み取っていずれかの Web サーバーで更新する必要があるため、データの一貫性が失われるのではないかと心配しています。Web サーバー A はデータを更新する可能性がありますが、サーバー B はサーバー A が更新を完了する前にデータを読み取ります。同時実行の競合があります。
ASP.NET 4.5 アプリケーションでこの種の戦略を実装する最善の方法を探しています。これは、メモリ内データベースを使用するか、データの整合性を保証しないかの選択になる可能性があると思います。
私の問題に対する最善の解決策は何かお聞きしたいです。
これが私の問題の例です:
MemCached サーバー - コレクション (コレクション A、B、C、D など) を格納します。各コレクションには、ユーザー ID が格納されます。これは、数千の ID、さらにはそれ以上になる可能性があります。
Web サーバー - SignalR がインストールされた私の Amazon EC2 Web サーバー。ロード バランサーの背後にある可能性があります。これらのサーバーは memcached サーバーにアクセスし、コレクション名 (「Collection_23」など) で完全なコレクション アイテムを取得する必要があります。アイテム (ユーザー ID) を削除し、アイテムを追加できる必要があります。これはすべて、可能な限り高速にする必要があります。
私は自分自身を正しく説明したことを願っています。ありがとう。