大規模な XML ファイル構造をメモリに格納する静的リポジトリがあり、MVC アプリケーションで一度だけ読み込まれます。アプリケーションは、2 つのインスタンスを使用して Azure (Paas) でホストされています。このリポジトリからコンテンツを追加したり、コンテンツを削除したりするために使用する設計ツールがあります。私たちが見つけた課題は、ものが追加されたら、リポジトリを破棄して再作成することで、リポジトリをリロードする必要があるということです。これは機能しますが、静的リポジトリがサーバー A でのみ更新され、サーバー B では更新されないという問題が残ります。要求がサーバー B に送信された場合、更新されていないため、ユーザーはその変更を認識しません。両方のインスタンスで IIS をリセットすると、問題が解決します。セッション状態を使用してリポジトリを保存しようとしましたが、データベース テーブルに値を保存するカスタム セッション プロバイダーとして使用すると、すべてのページ要求で session_start イベントが呼び出され、パフォーマンスの問題が発生します。両方のサーバーでリポジトリを更新し、最新の手法を使用するためのよりエレガントなソリューションを持っている人はいますか?
質問する
192 次
1 に答える
1
ロール内キャッシュを使用してリポジトリを保存することを検討しましたか (もちろん、既に行っているのと同様に永続化します)。
既存の Web ロールのメモリを使用するか、専用のキャッシュ ロールを作成できます。キャッシュはすべてのインスタンスにまたがるため、各インスタンスから同じデータにアクセスすることになります。
さらに一歩進んで: ロール インスタンスの再起動中のデータ損失が心配な場合 (インスタンスがダウンしたときにデータの一部がキャッシュに存在しなくなることを意味します)、キャッシュ名前空間で高可用性を有効にすることができます。 . この時点で、インスタンス間でデータがレプリケートされるため、インスタンスの再起動後も存続できます。
ロールのプロパティで、同じ場所にある (または専用の) キャッシュ設定を見つけることができます。
于 2013-05-01T23:04:37.100 に答える