0

キャッシュの問題に対する適切な解決策を探しています。次のように、Web サーバーのクラスター間で比較的少量のデータ (おそらく数十 GB) を分散させたいと考えています。

  1. データはすべてのノードに複製されます
  2. データは永続的です
  3. ローカルでデータにアクセスできる

キャッシング ソリューションを選択する動機は、現在、SQL Server データベースに単一障害点があることです。残念ながら、このデータベースのフェールオーバー クラスターをセットアップできません。すでに Memcached をかなりの範囲で使用していますが、Memcached ノードがダウンした場合に突然大量のキャッシュ ミスが発生し、1 つのエンドポイントに対して大量のリクエストが発生するという問題を回避したいと考えています。

代わりに、結果として生じる負荷が分散されるように、各 Web サーバー ノードにローカル永続キャッシュを配置することをお勧めします。検索が行われると、次を通過します。

  1. Memcached でデータを確認します。それがなければ...
  2. ローカル永続ストレージ内のデータを確認します。それがなければ...
  3. データベースからデータを取得します。

データが変更されると、両方のキャッシュ レイヤーでキャッシュ キーが無効になります。

私たちは多くの潜在的な解決策を検討してきましたが、どれも私たちが必要としているものと正確に一致していないようです:

CouchDB

これはかなり近いです。キャッシュしたいデータ モデルは非常にドキュメント指向です。ただし、その複製モデルは、まさに私たちが探しているものではありません。レプリケーションは、ノード間の永続的な関係ではなく、実行する必要があるアクションのように思えます。連続レプリケーションをセットアップできますが、これは再起動間で保持されません。

カサンドラ

このソリューションは、主に大規模なストレージ要件を持つユーザー向けのようです. 大量のユーザーがいますが、データは少量です。Cassandra はn個のフェイルオーバー ノードをサポートできるように見えますが、ノード間の 100% のレプリケーションは意図したものではないようです。代わりに、配布のみを対象としているようです。

さん

魅力的なアイデアの 1 つは、SAN または同様のタイプのアプライアンスに多数のファイルを格納できるというものです。私は以前にこれらを使用したことはありませんが、これはまだ単一障害点になるようです。SAN がダウンした場合、すべてのキャッシュ ミスについて突然データベースにアクセスすることになります。

DFS レプリケーション

簡単なGoogle検索でこれが明らかになりました。私たちが望むことをしているようです。レプリケーション クラスタ内のすべてのノード間でファイルを同期します。しかし、マーケティングのテキストを見ると、ドキュメントが別のオフィスの場所に確実にコピーされるようにするためのシステムのように見えます。また、ファイル数の最大値などの制限があり、うまく機能しません。

私たちと同様の要件があり、ニーズを満たす優れたソリューションを見つけた人はいますか?

4

2 に答える 2

1

私たちは、あなたが説明したものと似たような問題のために、Riakを本番環境で数か月間うまく使用してきました。私たちも以前に CouchDB と Cassandra を評価しました。

この種の問題における Riak の利点は、分散とデータ複製がシステムの中核にあることです。必要なクラスター全体のデータのレプリカの数を定義すると、残りの処理が行われます (もちろんそれよりも少し複雑ですが、それが本質です)。ノードを追加したり、ノードを削除したり、ノードをクラッシュさせたりしましたが、驚くほど回復力があることが証明されています。

ドキュメント指向、REST インターフェース、Erlang など、その他の点では Couch によく似ています。

于 2011-05-17T07:27:27.633 に答える
0

ヘーゼルキャストを確認できます。データは保持されませんが、フェイルオーバー システムが提供されます。各ノードには、ノードに障害が発生した場合にデータをバックアップするための多数のノードを含めることができます。

于 2011-06-14T14:50:11.503 に答える