【问题标题】:Understanding advanced ZeroMQ socket types了解高级 ZeroMQ 套接字类型
【发布时间】:2014-09-08 16:39:57
【问题描述】:

我已阅读 0MQ 指南,并且了解基本的套接字类型:PUSH/PULLREQ/REPPUB/SUB

我对@9​​87654327@/DEALERX- 套接字(例如,XSUB/XPUBXREQ/XREP)感到非常困惑。

这些套接字类型的用例是什么?

【问题讨论】:

    标签: zeromq


    【解决方案1】:

    琐碎的原型

    ZeroMQ "sockets" 听起来像一个面向套接字的设备,但是仔细观察这个智能库,它添加了一个正式的通信模式(顺便说一句,它使用true socket ),具有分层设计,可在内部解决内部弹性缓冲、内部 1:N 公平队列发送/轮询、内部 ioThread 负载平衡等细节。 /p>

    在这些内部智能子系统之上,也就是基本的正式通信模式——命名尽可能接近类似于人类的行为 -like- (one)-PUB-lishes + (others)-SUB -scribe -- ZeroMQ 构建更强大的消息传递方案的“底层”。

    作为一个好帮手,与其说PUB-socket,人们可能会选择将SUBXPUBDEALER 想象成一个实体-with-"行为"坐在电话线的一端,有一些根深蒂固的习惯 em>,它可以在通话过程中使用。

    因此,一些实体可以彼此交谈,就像 PUB 可以与一个或多个 SUB(s) 交谈 - 不知道有多少/如果有的话与他的,嗯,连接到 任何他的电话线(是的,PUB 可以有许多拨出电话线——另外,有关详细信息,请检查可用的 ZeroMQ 传输类,PUB 可以“为来电公开”或其他部署--(哦,是的,即使PUB 也可以“拿起他的电话线”并拨打(.connect() 向)选定的SUBXSUB 交易对手!酷...(是的,如设计了许多 ZeroMQ 功能))——所有这些都是并行的。

    SUB 可以自行决定和订阅过滤器,从传入的电话线听到什么和不听到什么。自然地,其他一些人根本不具备他们预先设定的行为,无法普遍地互相打电话并有意义地进行可行的对话,但可以与它的“友好”(行为兼容)交易对手交谈(PAIR ,例如,有一个也是唯一的机会去打电话 + 与另一个 PAIR-buddy 交谈。

    为了更深入地了解这些构建块,包括 XPUB/XSUB 动机,为什么他们必须扩展普通的 PUB/SUB 原语,可以推荐的最佳方法是阅读 @987654321 @。

    (恕我直言,一本必读的书,不仅仅是关于 ZeroMQ 本身的智能属性,还关于思维方式的转变和其他鼓舞人心的想法)。

    ROUTER/DEALER & DEALER/ROUTER

    这些正式的沟通模式在图 37 中得到了很好的说明,并在上述书中进行了讨论。值得一读,而不是仅仅在这里得到几句话。

    ROUTERDEALER 的示例(1-to-N 用例)其中一台服务器与多个工作人员异步对话可以“颠倒”以获得非常有用的N-to-1 架构,其中各种客户端与单个服务器通信,并异步执行此操作。因此,您的设计需要给出了确切的用例。

    XPUB / XSUB 用例

    一旦进入 ZeroMQ 原语元素之间的“inter-mediated”连接模式,XPUB/XSUB 代理“设备”提供的附加服务不仅仅是.bind().connect() 的代理。它还通过读取XPUB 套接字端来“解释”消息内容(检查传入的zmq.SUBSCRIBE-s 并通过代理自己的XSUB 将它们转移到真实的PUB-lisher 端)。这是XSUBXPUB 的主要用例

    逐个元素地掌握 ZMQ 武器库本身并不是目标。它更像是一个乐高风格的构建块套件,用于设计特定于项目的分布式消息传递模式,根据更复杂的需求进行协作——单节点故障后的自我修复、性能可扩展性、自适应重新配置和许多其他人。

    只有一张图片,图 60:

    复杂系统

    典型的实际应用程序必须走得更远,而不仅仅是重复使用基本的PAIR/PAIRXREQ/XREP、...原语,这些原语适合您的更高-级别设计需求,并在其之上添加行为策略,在您的全局设计控制下使用这些较低级别的原型。

    为了安排代码,值得先花时间看这本书,反之亦然。

    这将为您节省很多啊哈!片刻之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 2014-07-30
      • 1970-01-01
      相关资源
      最近更新 更多