2

ユーザーが実行したアクティビティをデータベースに記録する必要がある MVC および WebAPI アプリケーションがあります。これはほとんどの場合、5 列未満のテーブルへの 1 回の挿入です (つまり、ネットワークを通過するデータはほとんどありません)。私が現在使用しているデータ インターフェイスは Entity Framework 6 です

ときどき、多数のユーザーが 1 つのアクティビティを実行したことをログに記録する必要があります。この場合、「大量」は毎秒数百のリクエストになる可能性があります。通常、これはせいぜい数分間しか続きません。残りの時間は、サイトへの非常に管理しやすいトラフィックが見られます。

トラフィックが急増すると、一部のクライアントでタイムアウト エラーが発生します。これは、サーバーがデータをデータベースに挿入するまでページの読み込みが完了しないためです。これで、ユーザーがアプリケーションを使い続けるためにデータベースにデータを実際に挿入する必要がなくなりました。そのため、これらの要求をローカルのどこかにキャッシュし、後でバッチ挿入することができます。

ASP.NET MVC が着信要求データをバッファリングし、数秒ごとにデータベースにバッチ挿入するための適切なソリューションはありますか?


私の環境では、負荷分散された Web ファームで Server 2012 R2 を実行しているサーバーがいくつかあります。ユーザーはリクエストごとに異なるサーバーにアクセスする可能性があるため、可能な限りステートレスのままにしたいと思います。

4

1 に答える 1

2

トラフィックが急増すると、一部のクライアントでタイムアウト エラーが発生します。これは、サーバーがデータをデータベースに挿入するまでページの読み込みが完了しないためです。

メッセージキューを使用することをお勧めします。Web サイトのレンダリング コードで、アクションを表すオブジェクトをキューに単純にポストし、別のプロセス (Windows サービスなど) がキューから読み取り、Entity Framework を使用してデータベースに書き込むようにします。

アップデート

または、ファイルへのアクセスをログに記録し (高速)、別のプロセスでファイルを読み取り、情報をデータベースに書き込むこともできます。

私はメッセージ キュー オプションを好みますが、別のアーキテクチャが追加されます。

于 2015-09-11T20:35:15.610 に答える