0

私は、Redisをスケーリングする適切な方法は、個別のインスタンスを追加することであると読んでいます(CPUを集中的に使用するため、同じマシンでも問題ありません)。私が疑問に思っているのは、Mongosと同様に、ラウンドロビン/書き込み/読み取りを容易にする既存のコンポーネントがあるかどうかです。これにより、Mongosを呼び出すだけで、基になるインスタンスの1つに適切に書き込み/読み取りを行うことができます。上で表現したものよりも複雑であることに気づきましたが、これを処理するために独自のプロキシなどを作成しようとして、車輪の再発明をしたくありませんでした。

任意の提案/ヒントなどをいただければ幸いです。

ありがとう、

S

4

1 に答える 1

1

このアプローチは読み取りのスケーリングには機能しますが、Redisはredis-clusterでまだリリースされていないため、書き込みには機能しません。

負荷分散読み取りの場合、 BalanceなどのTCPロードバランサーは正常に機能するはずです。それはソフトウェアベースであり、セットアップと使用が非常に簡単なので、私はそれをリンクします。もちろん、ハードウェアロードバランサーがある場合は、そこで実行するか、他のいくつかのソフトウェアベースのロードバランサーのいずれかを使用できます。

もう1つのオプションは、クライアントコードにラウンドロビンを実装することですが、私はそれを自分で実装したくないのです。redis-clusterがリリースされると、どのサーバーに接続するかは実際には重要ではありません。

書き込みのバランスをとるには、データをシャーディングするルートをたどる必要があります。これは、CraigslistのRedisusgaeページでIMOについて詳しく説明されています。このルートを使用する必要があると思われる場合は、JZが使用するラインを使用して、事前に基本的なセットアップを行うことをお勧めします。理想的には、redis-clusterの準備ができたら、コードの変更を最小限に抑えて、それを処理するクラスターに移動する必要があります。

単一のIPで読み取りと書き込みの両方、および複数のシャード書き込みマスターを処理する場合は、その「プロキシ」を自分で作成するか、作成するクライアントコードにコードを配置する必要があります。あるいは、このプロキシアナウンスには必要なものが含まれている可能性がありますが、書き込みのルーティングについては何もわかりません。

最終的には、実装する前に、実際にその書き込みスケーリングが必要であることをテストして検証する必要があると思います。1つ以上のスレーブですべての読み取りがあり、スレーブにディスクの永続性を管理させる場合、通常、書き込みのパフォーマンスは問題にならないことがわかりました。

于 2012-07-31T15:19:49.690 に答える