zeroMq中pub-sub和push-pull模式的区别
Posted
技术标签:
【中文标题】zeroMq中pub-sub和push-pull模式的区别【英文标题】:difference between pub-sub and push-pull pattern in zeroMq 【发布时间】:2013-07-22 18:33:51 【问题描述】:这两张图片来自http://zguide.zeromq.org/page:all。
如果我们忽略推挽模式中的水槽,这两种模式有什么区别? 消息的传输方式是否有区别,如果有,有什么区别?
【问题讨论】:
【参考方案1】:不同之处在于PUB
套接字向所有 订阅者发送相同的消息,而PUSH
在其所有连接的PULL
中执行循环插座。
在您的示例中,如果您只从根发送一条消息,那么所有订阅者都会收到它(除了慢速订阅者等),但只有 1 个工作人员。
发布/订阅模式用于根据主题进行广泛的消息分发。推/拉模式实际上是一种流水线机制。您的推/拉示例似乎正在尝试进行负载平衡,这很好,但由于其他问题, req/rep 可能更适合于此。
看起来这里的“问题”在您获得图像的 0MQ 指南的同一部分中描述:push/pull ventilator example
【讨论】:
我也想知道丢失消息方面的区别......即如果服务器 PUB 或 PUSH 消息和客户端 [1] 丢失连接并重新连接 [2] 客户端连接会发生什么一直,但客户忙于工作,不在 .recv()SUB
和 PULL
套接字具有它们从可用消息中使用的共同属性,即使客户端代码没有执行 recv
,所以在您的示例中,客户端 [2]在任何一种情况下都会收到消息,并且客户端 [1] 将在重新连接时开始收到新消息。重要的是,这两种套接字类型都不是针对特定客户端的。
你从哪里得到这些信息....用 zeroMQ 试试看,或者你找到了一些很酷的资源?
两者兼而有之 :) 该指南非常出色,值得详细阅读。
在 N 对 1 方案中,一个比另一个更好,即有多个发布者(或推送者)发送给单个订阅者(或拉取者)?以上是关于zeroMq中pub-sub和push-pull模式的区别的主要内容,如果未能解决你的问题,请参考以下文章