ZMQ を使用してパブ/サブ アーキテクチャを設計しています。私は最大限の信頼性とスケーラビリティを必要としており、与えられた可能性の地獄に迷い込んでいます。
現時点では、ブローカーによってリンクされたパブリッシャーとサブスクライバーのセットを取得しています。ブローカーは、パブリッシャーのフロントエンドとサブスクライバーのバックエンドを公開するシンプルなフォワーダー デバイスです。
ブローカーがクラッシュまたは切断した場合に対処し、全体的なスケーラビリティを改善する必要があります。
そこで、複数のブローカーを追加することを考えました。パブリッシャーはブローカーをラウンドロビンしてメッセージを送信し、サブスクライバーはこれらすべてのブローカーをサブスクライブするだけです。
次に、可能なブローカーのリストを取得する方法が必要だったので、必要に応じてブローカーのリストを提供するネーム サービスを作成しました。パブリッシャーとサブスクライバーは、このサービスに接続するブローカーを尋ねます。
また、メインのネーム サービスが機能しなくなった場合に備えて、一種の「怠惰な海賊」 (つまり、次々に試行/再試行) の信頼できるネーム サービスも作成しました。
コードベースのサイズと複雑さが止まらないため、設計が間違っていると思い始めています。ZMQ が提供する可能性のジャングルで迷っています。
たぶん、ルーター/ディーラーベースの何かがここで使用できるでしょうか?
どんなアドバイスでも大歓迎です!