私はpythonとzeromqを使って動作するアプリケーションを持っています。私はそれを最適化したいと思います。pythonとzeromqでタスクを配布する
簡単に言えば、マスターノードはすべての作業者(約200人)に同じ要求を送信し、次に回答を収集します。答えに基づいて、1つのノードにメッセージを戻し、ノードは応答します。
今、私は非常に単純なパターンを実装しました。各作業者には1つのREPソケットがあり、サーバーにはREQソケットのリストがあります。サーバーは、一般的なメッセージを送信するすべてのソケットを反復し、すべてのソケットを反復して応答を収集します。最後に、サーバーは回答に基づいて1人のワーカーを選択し、メッセージを送信して応答を待ちます。
これはもちろん、かなり遅いです。最も遅い部分は同じメッセージを200回送信しています。収集も遅いです。私がタスクを配布し、回答を収集するために見つけた解決策は、私が必要とするものではない負荷分散を行います。私は各作業員がメッセージを受け取り応答する必要があります。
この状況ではどのようなパターンが推奨されますか?
ありがとうございました
「この状況に適したパターンは何ですか?」とはどういう意味ですか? – Marcin
たとえば、独立したタスクを処理する必要がある場合は、ベンチレータパターンを使用して、ここに記載されているようにタスクを配布できます。http://taotetek.wordpress.com/2011/02/02/python-multiprocessing-with-zeromq/ – Hernan
私はパターンが何であるか知っています。実際にあなたが何をしているのか、現在のソリューションのどの部分が必要なのか、またメッセージの配信が遅いのかについては、実際には説明していません。 「物事を配布するのが遅い」という古典的な解決策は、物事を配布しない、または物事を分散させないことです。 – Marcin