Azure .NET インスタンスで使用できるローカル メモリ ストアを実装する簡単な方法を探しています。
私はAzure Co-located Cachingを見てきましたが、私のすべての要件をサポートしているようです:
Web ロールと worker ロールの両方で作業する
単純な LRU を実装する
キャッシュされたオブジェクトをメモリ (RAM) に保持する
マシンの合計 RAM のパーセンテージとしてキャッシュ サイズを定義させてください。
Web/worker ロールの同じマシンにキャッシュを保持する (共存モード)
同じマシンで実行されている複数の AppDomains から同じキャッシュにアクセスできるようにします (Web ロールはハンドラーを異なる AppDomains に分割する場合があります)
Azure のコロケート キャッシュに関して私が抱えている唯一の問題は、異なるインスタンスが通信し、それらのキャッシュを共有しようとすることです。
すべてのマシンに独自の個別のインメモリ キャッシュを持たせたいと考えています。このキャッシュをクエリするとき、他のインスタンスのキャッシュへのネットワーク リクエストを作成するために時間を無駄にしたくありません。
ローカルキャッシュ構成?
ローカル キャッシュを有効にする Azure キャッシングの構成設定を見てきましたが、それでもマシンが相互に通信する可能性があるようです (つまり、キャッシュ ミス中)。この構成にはttlValue
andも必要objectCount
です。TTL を「永久に」、オブジェクト数を「キャッシュ全体がいっぱいになるまで」にする必要があります。maxInt
どちらの場合も指定が間違っているように感じます。
単純な静的変数はどうですか?
よく考えてみると、このすべての Azure キャッシュは、私が必要としているものに対して少しやり過ぎのように思えます。基本的に、アプリケーション/ロールレベルで静的変数が必要なだけです..ただし、要件#6(異なるAppDomains)では機能しません。この場合、要件 4 の実装も少し難しくなります。
Memcached
古き良きmemcached
ものはまさに私が望むことをしているようだと思います。問題は、Azure を PaaS として使用していて、自分の VM を管理したくないことです。自分の役割にインストールできないと思いmemcached
ます.. [更新] memcached を自分の役割でローカルに実行できるようです。memcached 自体を使用しない、よりエレガントな「ネイティブ」ソリューションはありますか?