1

Web API へのすべての呼び出しをデータベースに記録する必要があります。もちろん、すべての呼び出しでデータベースにアクセスしたくありません。

たとえば、キャッシュに辞書またはハッシュ テーブル オブジェクトがあり、10000 レコードごとにデータベースにアクセスするとします。

10000 人のユーザーごとにこの操作を待機させたくありません。また、アプリケーションプールは基本的にいつでもリサイクルできるため、長い操作のために別のスレッドを開始することはできません。

このシナリオに最適なソリューションは何ですか?

ありがとう

4

1 に答える 1

0

耐久性に対するあなたの見方はかなり矛盾していると私は主張します。10000 個のオブジェクトのキャッシュも、アプリ プールのリサイクルまたはサーバーのクラッシュにより、いつでも失われる可能性があります。

しかし、ユーザーを待たせることなく大規模な操作を実行する方法という元の質問には:

  • アプリ プールのリサイクルに制約を課し、潜在的なデータ損失に対処します。

  • さらに処理するために、キャッシュされたメッセージを Windows サービスに定期的にダンプします。これは、データの保存を 100% 保証するものではありません。たとえば、サービス/サーバーがクラッシュする可能性があります。

  • おそらく WCF と共に、メッセージ キュー ( MSMQ )を使用します。メッセージ キューはディスクに永続化できるため、これはかなり信頼できると見なすことができます。

メッセージ キュー (MSMQ) テクノロジを使用すると、さまざまな時間に実行されているアプリケーションが、一時的にオフラインになる可能性がある異種ネットワークやシステム間で通信できるようになります。アプリケーションはメッセージをキューに送信し、キューからメッセージを読み取ります。

メッセージ キューは、保証されたメッセージ配信、効率的なルーティング、セキュリティ、および優先度ベースのメッセージングを提供します。高パフォーマンスを必要とする非同期シナリオと同期シナリオの両方に対するソリューションの実装に使用できます。

これをさらに一歩進めて...

要件や環境によっては、おそらくキャッシュを削除して、すべてのメッセージをメッセージ キューにすぐに (そして迅速に) 書き込むことができます。パフォーマンスの低下大規模な書き込み操作について心配する必要はありません。

于 2013-03-30T09:20:42.567 に答える