フロントエンドサーバーがタスクをバックエンドサーバーに送信する、 N台のフロントエンドサーバーとM台のバックエンドワーカー用のZeroMQアーキテクチャを設計しようとしています。フロントエンド サーバーはバックエンド サーバーに関する情報を持っていますが、バックエンド サーバーはフロントエンドについて知りません。2 種類のタスクがあります。1 つはラウンド ロビンを使用して 1 つのバックエンド サーバーにのみ移動するタイプで、もう 1 つはすべてのバックエンド サーバーにブロードキャストする必要があります。単一障害点になるため、中央ブローカーは持ちたくありません。
最初のタイプのタスクではリクエスト/レスポンス パターンが適切なようですが、2 番目のタイプではパブリッシャー/サブスクライバー パターンになります。しかし、この 2 つを組み合わせたパターンはどうでしょうか。すべてのバックエンド サーバーまたは 1 つのランダムなバックエンド サーバーにメッセージを送信する場合、送信時に選択できるパターンはありますか?
私が思いついた解決策は、パブリッシャー/サブスクライバーを使用し、メッセージの先頭にバックエンド サーバー ID を追加し、それがすべてにアドレス指定されている場合は何らかの魔法の値を付加することです。ただし、これにより不要なトラフィックが大量に発生します。それを行うためのよりクリーンで効率的な方法はありますか?