【问题标题】:Using zeromq to design a publish subscribe system with multiple brokers使用 zeromq 设计具有多个 broker 的发布订阅系统
【发布时间】:2013-08-16 21:43:33
【问题描述】:

我几天前才开始使用 zeromq。我的目标是设计一个包含多个经纪人(经纪人网络)的发布订阅系统。我已阅读 zeromq 指南的相关部分,并为简单的 pub 子系统编写了代码。如果有人可以帮助我解决以下问题:

据我所知,代理(xpub-xsub 套接字)也将具有推/拉套接字来传递发布-订阅消息。那是对的吗?对于经纪人应如何沟通方面的任何帮助,我们将不胜感激。经纪人之间应该有中介吗?

任何设计指南都会很有帮助。谢谢。

【问题讨论】:

    标签: zeromq publish-subscribe


    【解决方案1】:

    指南说我们应该在动态时使用 xpub 和 xsub 套接字 需要发现。有人可以解释一下区别吗 套接字之间:xpub 和 pub,以及 xsub 和 sub。

    XPUB 表示多个发布者,而PUB 表示单个发布者。

    XSUB 表示多个订阅者,而SUB 表示单个订阅者。

    如果您想将多个订阅者连接到多个发布者,同时仍然具有动态发现的好处,则需要中间的代理;如下图所示。 PUB 套接字向代理发送消息; XSUB 将消息转发给 XPUB,然后 XPUB 将这些消息分发给所有监听的 SUB。

    创建这样一个代理的代码很简单(如下),PUB和SUB端很简单,查看示例code

    Socket xsub = ctx.createSocket(ZMQ.XSUB);
    input.bind( "tcp://*:5500");            
    Socket xpub = ctx.createSocket(ZMQ.XPUB);
    xpub.bind( "tcp://*:5600");
    ZMQ.proxy( xsub, xpub, null);
    

    据我所知,代理也会有推/拉套接字 传达发布-订阅消息。那是对的吗?任何帮助 经纪人应如何沟通的条款将不胜感激。 经纪人之间应该有中介吗?

    查看Inter-Broker Routing 示例的指南

    【讨论】:

    • Inter-Broker 路由示例很有帮助,但我需要帮助才能详细了解以下内容: 1. broker 网络的逻辑拓扑应该是什么。 2. 一开始他们是怎么知道彼此的? 3.如何将发布的消息路由到正确的订阅者?这样的问题在我脑海中萦绕,我真的不知道从哪里开始。即使是一个有 4-5 个经纪人的小原型,以及几个发布者/订阅者,我觉得我必须回答这些问题。任何帮助将不胜感激。
    • 我也有同样的问题,我能给你的最好建议是从小事做起 (github.com/imatix/zguide/tree/master/examples);每个都针对不同的用例,一旦您了解它们,您就可以构建复杂的消息传递系统。
    • 这对您有帮助吗?
    • 是的,确实如此。我开始使用代理间路由示例和majordomo 模式来设计请求-回复系统。 Pub-sub 需要稍后添加。对于少数经纪人来说,它运作良好,但由于所有经纪人都相互认识,因此系统非常健谈。我仍然不确定如何为大量经纪人进行路由。有一些关于使用分布式哈希表的提示,但我仍在考虑它。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 2015-09-14
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多