2017-05-21 8 views
0

PUSHソケットを使用している場合は、接続する最初のPULLソケットが不公平なメッセージの共有を取得することがわかります。メッセージの正確なローテーションは、すべてのPULLソケットが正常に接続されている場合にのみ発生し、数ミリ秒かかる場合があります。 PUSH/PULLの代わりに、データレートを低くするために、ROUTER/DEALERとロードバランシングパターンの使用を検討してください。ZeroMQのPULL-PUSH同期を行うもう1つの信頼できる方法

PUSH/PULLで同期を行う1つの方法は、負荷分散パターンを使用しています。以下、この特定のケースでは

、私は同期を行うための別の方法があるかどうかを疑問に思う:

Parallel Pipeling

私は、接続に成功し、セットアップまでブロックするために労働者にPULLエンドポイントを設定し、送信することができます作業者のPULLエンドポイントを経由して「シンク」する特別なメッセージ。 'シンク'が#ワーカーの特別なメッセージを受け取った後、 'sink'はREQ-REPでメッセージを 'ventilator'に送信して、すべてのワーカーが準備完了であることを通知します。 「人工呼吸器」は仕事を労働者に分配し始める。 それは信頼できるですか?

絵は限りSinkが、それはメッセージの送信を開始するためにOKだとVentilatorを伝える前に待つためにどのように多くのWorkers知っているように、はいhere

答えて

0

からです。 Sinkが接続する前に起動すると、Workersの特別なメッセージが届くかどうかという疑問がありますが、Ventilatorからデータを取得するまで、特別なメッセージを送信し続けることで解決できます。これを行うと、Sinkは受信した重複を無視します。

もちろん、Workersは実際にはVentilatorに接続していますが、Workersが受信する特別な何もしないメッセージを送信している可能性があります。彼らが特別なメッセージをSinkに送ることができるときのそれらの1つを受け取るとき。

関連する問題