私の質問は、Amazon EC2 の複数のサーバーにまたがる高速アクセスのための集約データに関するものです。ASP.NET アプリケーションでは、おそらくそのデータを Application["somevar"] 変数に格納して、すべてのユーザーが (メモリ内で) すばやくアクセスできるようにします。
問題は、集約されたデータを収集し、その値をすべてのサーバーで等しくしたいときに始まります。2 つのサーバーをデプロイすることを選択した場合、ユーザーは毎回異なるサーバーにデータを送信する可能性があります (サーバーはロード バランサーまたは ElasticBean の下にあります)。たとえば、ユーザーがページを要求した回数を数えると、各サーバーのアプリケーション変数の値は異なります
例えば:
サーバー 1:
アプリケーション["カウンター1"] = 120
サーバー 2:
アプリケーション["カウンター1"] = 130
私が欲しいのは、すべてのサーバーで同じ変数です。アプリケーションのような変数にデータが必要な理由は、高速アクセスのためにメモリ内にそのデータが必要であり、そのデータをデータベースに書き込む可能性があるからです。
私が知りたいのは、どうすればこれを達成できるかということです。Amazon ElasticCache の使用について考えたので、ロード バランサーの下に 10 台のサーバーがある場合でも、API を介して ElasticCache 変数にアクセスでき、どのサーバーから memcache 変数にアクセスしても、同じ変数を取得/設定します。したがって、クロスサーバーのグローバル変数を保持するという目標を達成できます。
それが良い習慣であるかどうか、またそのような機能を実装するためのより良い方法があるかどうかを知りたかったのです。
ASP.NET C# と MySQL でアプリケーションを開発しています。また、集約されたデータの一部をデータベースに書き込む必要があることも考慮してください。これは、同時に多くの書き込みを防ぐために行います。たとえば、20 回の書き込みに達した後にデータを書き込むと、データは次の場所に書き込まれます。データベース。