0

セットアップ
フロントエンド マシンは Web リクエストを受け取り、3 つの異なる種類のタスクをGearmanサーバーに配置します。
そのギアマン サーバーに登録された 3 台のワーカー マシンは、それぞれがこれらのタスクのいずれかを実行できます。

異なるタスクは異なるリソースを消費します。
各タスクは、CPU/RAM/IO 消費の点で異なります。
キュー内のタスクの量は、ワーカーの数よりもはるかに多くなります。つまり、各作業マシンは複数のワーカー インスタンスを Gearman に登録しました。

動的に負荷を分散する方法
問題は、1 つのワーカー マシンがすべての CPU 拡張タスクを取得でき、別のワーカー マシンが I/O 拡張タスクを取得できる一方で、理想的には、ワーカーがこの異なる種類のタスクをすべて並行して実行することで、はるかに優れたパフォーマンスを発揮できることです。

おそらくギアマンは適切なツールではありませんか?

4

1 に答える 1

0

おそらく、公平なディスパッチを備えたRabbitMQを
使用し、3つの異なるキューを使用できます.1つはCPUを消費するタスク用、もう1つはi/o用、もう1つはネットワーク用です。

したがって、ワーカー マシンがこのタスクのいずれかを完了するたびに、それが完了したことを認識し、同じリソースを消費するタイプの別のタスクを取得します。

于 2013-01-21T11:07:03.723 に答える