2013-03-08 7 views
6

Python-RQのタスクサーバーとして機能するRedisインスタンスを水平方向にスケールアウトしようとしています。Python-RQまたはRedisをPythonで水平スケーリングまたはシャーディングする

私が知る限り、これを行う最善の方法は、カスタムConnectionPoolおよび/またはConnectionクラスにシャーディングロジック(おそらくConsistent Hashingを使用)を追加することです。 Consistent Hashingメカニズムのためにライブラリを使用したいと思います。おそらく入手可能で、自国のソリューションよりも優れている/戦闘テストされている可能性が高いようです。

このようなことをするには、どのようなパターンが良いでしょうか?私が調べなければならない図書館はありますか?私が欠席しているものがありますか?

ありがとうございました!

答えて

2

私はあなたのことを覚えておくべきだと思います。

まず、ボトルネックがどこにあるのか、RedisのバックエンドでPython-Rqの1つのパラダイムのもとでパーティションアーキテクチャーを与えるべきなのです。レディスは、ブートロークがあなたの人数と、あなたが一定の時間に処理したい仕事の数にあるべきだと信じるのに十分な数のperformanceを持っていると思います。

あなたは言うことができます:このジョブを処理するまで何時まで待つことができますか?この値を知ることができれば、待ち時間。アーキテクチャにノードを追加/追加するための鍵があります。

ところで、一貫性のあるハッシングを使用してインフラストラクチャを改善するために探している場合は、新しいノードが削除または追加されたときにリバランスキーの背後にある問題を考慮する必要があります。

たとえば、新しいジョブが開始されてから終了する前に、新しいサーバーが追加または削除されたため、現在の従業員の1人がすでに存在しているジョブに対して間違ったredisサーバーに接続される可能性があります。

+0

はい、私はこれが問題の重要な部分であると考えています。しかし、私はそれが私の質問に答えるとは思わない:アプリケーションを水平方向にRQで拡大できるようにするには?私はそれをするためにどのようなテクニックを従うべきですか? –

+0

しかし、どのリソースをアプリケーションに拡大しますか? – pfreixes

関連する問題