2016-08-28 21 views
-2

セロリを使う利点が何であるか理解できません。私はあなたがRedis、RabbitMQなどでCeleryを使うことができることに気が付いていますが、Celeryを前に置くのではなく、メッセージキューサービスのクライアントを直接取得するのはなぜですか?セロリとレディスとレディスとの比較

+0

メリットは使用方法に基づいており、結局のところメリットはありません。あなたが小さなシステムを構築しているなら、セロリはあなたにとって役に立たないかもしれません。これは、複数のノードを持つ大規模なシステムに役立ちます。 – ipinak

+0

この質問はこのサイトには適していません。良い、客観的に正当な答えは、解決されている問題の具体的な詳細に依存しますが、可能性のある問題の宇宙全体にフィールドを開いてしまいます。 AとBの問題には問題があります。問題Aはcronジョブ+ Redisではるかに良く解決されますが、問題BにはCelery + Redisを使用するほうが効果的です。セロリーを使用するかどうかは、実際に解決されている問題の詳細によって決まります。 – Louis

答えて

2

Celeryを使用する利点は、主にタスク処理コードを記述する必要があり、タスクプロセッサへのタスク配信の処理がCeleryフレームワークによって処理されることです。タスク処理のスケーリングは、並行性の高いセロリのワーカー(処理スレッド/プロセスのほうが多い)を実行するだけで簡単に実行できます。キューにタスクを送信し、キューからタスクを消費するコードを記述する必要はありません。 また、タスクキューのコンシューマを追加/削除する機能も組み込まれています。フレームワークは、タスクの再試行、障害処理、蓄積された結果などをサポートします。タスク処理ロジックのみの実装に集中するのに役立つ多くの機能を備えています。

ちょうどアナロジーのために、map-reduceプログラムをHadoop上で実行することは非常に複雑な作業ではありません。データが小さければ、簡単なPythonスクリプトを書いてmap-reduceロジックを実装することができます。このロジックは、Hadoop map-reduce Jobが同じデータを処理する性能を上回ります。しかし、データが非常に大きいときは、データを複数のマシンに分割する必要があります。複数のプロセスを複数のマシンで実行し、実行を調整する必要があります。複雑さは、マッパーの複数のインスタンスを実行し、複数のマシン間で減速タスクを実行し、入力を収集し、マッパーに入力を分配し、マッパーの出力を適切な減速装置に転送し、進行を監視し、失敗したタスクを再起動し、ジョブの完了を検出することにあります。 しかし、私たちはHadoopを持っているので、分散ジョブを実行する根本的な複雑さにはほとんど気にする必要はありません。同様にセロリーも主にタスク実行ロジックに集中するのに役立ちます。

関連する問題