5

非常に動的な Web サイトを展開中です。ピーク時は毎分約 20,000 件のアイテムが処理および更新されます。各項目のサイズは 1kb から 500kb の範囲です。これらのアイテムは、毎分キャッシュで取得、処理、更新する必要があります。

最初の 2 ~ 3 か月で最大 1000 ユーザーのトラフィックが見込まれます。各ユーザーが Web サイトにアクセスすると、人気のあるコンテンツを要求している場合と、人気のないコンテンツを要求している場合があります。すべてのコンテンツは、永続ストアにあるものの上位レベルで処理された形式です。したがって、人気があるかどうかに関係なく、処理されたすべてのアイテムを低レイテンシーのストアに置いて、優れたユーザーエクスペリエンスを実現することが絶対に必要です.

Memcache、Redis、および Couchbase を個別に試しました。

Memcache は非常に高速ですが、特定のスラブでメモリが不足し、アクティブなアイテムが削除され始めるという問題が発生しました。

Memcache よりも比較的遅い Redis は、アイテムの永続性が必要な場合に最適です。

しかしすぐに、シャーディングとレプリケーションが必要であることに気付きました。

Couchbaseはそれをすぐに提供しました.CouchbaseサーバーとインターフェースするMoxi-clientには、重い同時プロセスを処理できないという独自の問題があります。セットが欠落し始め、時々取得します。それと連携する Python SDK に移行しました。クラスタ内のノードの 1 つがダウンした場合、パフォーマンスが低下し、新しいトポロジをまったく検出できませんでした。キャッシュ内の一部のデータが失われ、貴重な数時間サイトが非アクティブになりました。

私たちのニーズに合った完璧な製品が存在しないことに気付いた時点で. すべてのテクノロジーと自分のニーズを認識しておく必要があります。データがどのように進化するかを予測し、それに応じて準備する必要があります。最良のソリューションは、おそらくテクノロジーのハイブリッドです。しかし、そこに何か他のものがあるかもしれないことを期待してこれを出しています。2012 年末が近づいています。強力なハードウェアでバックアップされたすぐに使えるソリューションで、必要なものを提供するのはどれほど難しいことでしょう。

洞察に満ちた記事への考えやリンクは大歓迎です。ありがとう!

4

1 に答える 1

8

ここにあなたが上で言及したいくつかの技術についてのいくつかのメモがあります。

Memcached:

Memcachedは単なるキャッシュシステムであり、データの永続性を提供しません。memcachedを使用する場合は、他の種類の永続ストアを選択して、すべてのデータを保持する必要があります。Memcachedも非常にシンプルなキャッシュシステムであり、レプリケーションを提供しませんが、これらはmemcachedにこのような機能を追加した別のプロジェクト(repcacheなど)です。永続層としてリレーショナルデータベースを使用したい場合にのみ、memcachedを使用します。

Redis:

Redisはデータ構造サーバーであり、その目的でのみ使用する必要があります。Redisの欠点は、単一のサーバーでしか実行できないことです。Redisの複数のサーバーが必要な場合は、アプリケーションのシャーディングを行う必要があります。私が見たRedisのデプロイメントのほとんどは、別のデータベーステクノロジーと並んでいます。

Couchbase:

Couchbase 2.0は、製品をドキュメントデータベースに変換します。この製品にはmemcachedテクノロジーが組み込まれているため、memcachedをすぐに使用できます。これは、ミリ秒未満のレイテンシーを意味します。これに加えて、レプリケーション、クロスデータセンターレプリケーション、およびクエリのサポートを利用できます。また、ほとんどのCouchbase SDKはmoxiを使用しておらず、PythonSDKはまだベータ版であることに注意してください。

あなたがするのに役立つかもしれない一つのことは、すでに公開されている結果のいくつかと一緒にYCSBベンチマークプロジェクトをチェックすることです。このプロジェクトでは、これらのデータベースやその他のデータベースが負荷の下でどのように機能するかについての良いアイデアを得ることができます。次に、気に入ったものが見つかったら、それらの機能リストを調べて、開発中のアプリケーションに最適な機能を備えた製品を見つけます。

また、上記のデータベースに関する私の情報のいずれかが正しくない場合は、私に知らせてください。これらのプロジェクトは急速に進化しており、追いつくのが難しい場合があります。

編集: Couchbaseは、リストされているデータベースの中で、レプリケーション、シャーディング、および低遅延を提供する唯一のデータベースであることにも言及する必要があります。redisを使用すると、レプリカサーバー、つまりレプリケーションを使用できるようになると思いますが、シャーディングを行う場合は、アプリケーション層で行う必要があります。

于 2012-10-26T17:29:15.657 に答える