3

Webサーバーアプリケーションサーバーの間にキャッシュのレイヤーを適用するための優れたツールは何ですか。

基本要件:

  1. アプリケーションサーバーには、アイテムをキャッシュから削除し、有効期限のあるアイテムをキャッシュに入れる方法が必要です。
  2. Webサーバーには、アプリケーションサーバーでのスレッド割り当てを必要とせずに、非常に軽量で高速な方法でアイテムをキャッシュから引き出す方法が必要です。
  3. 必ずしも分散キャッシュ(複数のマシンからアクセス可能)である必要はありませんが、問題はありません。

私が検討した戦略:

  1. 静的ファイルキャッシング。リクエストが届き、ハッシュされます。ファイルが存在する場合はそれを提供し、存在しない場合はリクエストをアプリサーバーにルーティングします。同時実行性による高I/Oの問題またはファイルロックの問題ですか?メモリ内のカーネルレベルのキャッシュにより、ファイルシステムが実際に非常に高速であるというのは正確ですか。
  2. mongodbやredisなどのKey-ValueDBを使用します。これにより、完成したHTML/JSONフラグメントがdbに保存されます。Webサーバーは、DBから読み取り、必要に応じてアプリサーバーにルーティングできるようになっています。アプリサーバーは、DBに挿入/削除するために装備されます。
  3. memcachedやVarnishのようなメモリキャッシュ(Varnishについてはよくわかりません)。memcachedに関する私の唯一の懸念は、いつでも3〜10ギガバイトのデータをキャッシュしたいということです。これは、メモリに安全に割り当てることができる量を超えています。memcachedにはファイルシステムにスピルするメソッドがありますか?

このタイプのキャッシングレイヤーを試すときのいくつかのテクニックと落とし穴について何か考えはありますか?

4

2 に答える 2

3

また、メモリデータグリッドでGigaSpaces XAPを使用して、Webアプリケーションをキャッシュしたりホスティングしたりすることもできます。キャッシュオプションのみを選択するか、2つの能力を組み合わせて、他のことと一緒に環境を1つ管理することができます。

提案したキーと値のペアのアプローチとは異なり、GigaSpaces XAPを使用すると、SQL、オブジェクトベースのテンプルなどの複雑なクエリを実行できます。キャッシングシナリオでは、ローカルキャッシュ関連の機能をより具体的に確認する必要があります。

ローカルキャッシュ

Webコンテナ

免責事項、私はGigaSpacesの開発者です。

エイタン

于 2012-11-11T09:12:36.143 に答える
0

Coherence( http://coherence.oracle.com/ )を使用するPOVからこれに答えるだけです:

1. アプリケーション サーバーには、アイテムをキャッシュから削除し、アイテムを有効期限付きでキャッシュに入れる方法が必要です。

// remove one item from cache
cache.remove(key);

// remove multiple items from cache
cache.keySet().removeAll(keylist);

2. Web サーバーには、アプリケーション サーバーでのスレッドの割り当てを必要とせずに、非常に軽量で高速な方法でキャッシュからアイテムを引き出す方法が必要です。

// access one item from cache
Object value = cache.get(key);

// access multiple items from cache
Map mapKV = cache.getAll(keylist);

3. 必ずしも分散キャッシュ (複数のマシンからアクセス可能) である必要はありませんが、問題はありません。

  • 伸縮性があります。ノードを追加するだけです。自動検出。自動負荷分散。データ損失なし。中断なし。ノードを追加するたびに、データ容量とスループットが向上します。
  • 自動高可用性 (HA)。プロセスを強制終了し、データを損失しません。サーバーを強制終了しても、データは失われません。

memcached や Varnish などのメモリ キャッシュ (Varnish についてはよくわかりません)。memcached に関する私の唯一の懸念は、いつでも 3 ~ 10 ギガバイトのデータをキャッシュしたいということです。これは、メモリに安全に割り当てることができる量を超えています。memcached にはファイルシステムにスピルする方法がありますか?

  • RAM とフラッシュの両方を使用します。透過的に。Coherence ノードごとに数十または数百ギガバイト (物理サーバーごとに最大 1 TB 以上) を簡単に処理できます。

完全な開示のために、私はオラクルで働いています。この投稿で表明された意見や見解は私自身のものであり、必ずしも私の雇用主の意見や見解を反映するものではありません.

于 2013-08-13T04:09:12.807 に答える