私は、中規模システムの場合、ZeroMQをPub-Sub(サービスバススタイル)インフラとしてテストしています。 私たちは約50のノードを持っています。それらはすべてパブリッシャーとサブスクライバーでなければなりません。 ネットワークはスタートポロジのようなものですが、エッジはお互いに「話し合っています」。 ダイナミックディスカバリ(参加者のネットワークアドレスをハードコードする必要はありません)が必要ですが、SPOF(Single Point of Failure)も必要ありません。メディエータのないZeroMQ Pub-Sub + Dynamic Discovery
http://zeromq.org/whitepapers:0mq-3-0-pubsubと私が理解しているところからは、動的ディスカバリのために提案されている0MQの方法は、サブスクリプションとパブリケーションを転送するプロキシノード(XPUB/XSUB)を必要とします。 (A)プロキシノードがSPOFである - システム全体が機能していないときにエラーが発生する (B)このシステムでは、このようなプロキシを中央メディエータとして使用することを検討しましたが、データを含むすべてのトラフィックは、プロキシノードを通過します。これは、待ち時間&のパフォーマンスの問題を意味します。
私がpub-subホワイトペーパーを正しく理解していると仮定すると、ZeroMQでpub-sub + dynamic-discovery + no-SPOFを達成するための比較的簡単な方法がありますか?
追加ポイント:ほとんどのメッセージには利害関係者が1人または少数しかいないため、ネットワークを混雑させたくないため、マルチキャスト(PGM)ソリューションを除外しました。
は実際に私が提案されたソリューションで何かを理解していない:すべての加入者が加入した場合、ラウンドロビンDNSがどのだろういくつかの(?シングル)プロキシにリダイレクトされますいくつかのLTM、へのサブスクリプションメッセージをリダイレクトしますサブスクリプションを保持します。このプロキシマシンがクラッシュした場合、サブスクリプションは失われますか? – dux2
ありがとうございます。このソリューションでは、各プロキシのパブリッシャのリストを静的に構成することを避けるにはどうしたらよいでしょうか?どのように遅く参加している出版社を扱っていますか?私は出版社が起動時に各プロキシにその存在を「アナウンス」して、プロキシがすべてのサブスクリプションを新しいパブリッシャーに送信すると考えることができます。プロキシはクラッシュからどのように回復しますか?すべての加入者からの再加入を頼むか、または加入を永続させる必要があります。 これはすべて可能ですが、書き込むコードがたくさんあります。自分のpub-subを一から作成するのとほとんど同じです。 – dux2
再び更新されました。 – raffian