【问题标题】:N to N async pattern in ZeroMQ?ZeroMQ 中的 N 到 N 异步模式?
【发布时间】:2013-01-11 00:40:29
【问题描述】:

虽然我浏览了指南,但我找不到执行以下操作的方法:
我们有 n 个出版商,
我们有 m 个订阅者。
每个订阅者订阅某种类型的消息(一个发布者可以发送多种消息,多个发布者可以发出相同类型的消息)。
如何在 0MQ 中创建 N 对 N(或 N 对 1 对 N)模式?

【问题讨论】:

  • 我闻到了反对票。 “你试过什么?”
  • 指导示例,简单的很容易做到,但是示例中没有一个N到N,除了一个对我没用的(扩展请求-回复)-我需要一种方式沟通
  • 换句话说,你问的是如何在 zeromq 中实现 ROS 主题。
  • 通常的废话“你可以有多个订阅者到一个发布者”。你不知道 FING 出版商。发布者是一个集群。您不是针对“A”发布者,而是针对它的一个集群。这似乎是一个对大众来说太困难的概念。 0MQ 中关于这种情况的每个该死的图表要么有一个节点在那里执行代理/pubsub/whatever,要么有一个“多播 UDP”。这些都不能解决 N 对 N 对等连接的任何问题。
  • 我问过同样的问题,但有一个代码示例:stackoverflow.com/questions/49488135/…

标签: zeromq


【解决方案1】:

模式?发布者将接受任意数量的订阅者,您的订阅者可以connect 到多个发布者。我在这里没有看到任何问题,请继续执行。

在未来,也许通过陈述您想要完成的工作而不是您认为应该如何完成来为您提供更好的服务。仅仅将一群订阅者与一群发布者联系起来可能不是处理你正在做的任何事情的最佳方式。

【讨论】:

  • 我想要一组发布者和一组订阅者。但是订阅者不订阅发布者 X,而是订阅 msg 的标签。我也希望它是异步的。
  • @NoSenseEtAl:好的。请解释这与我上面所说的有什么冲突。
【解决方案2】:

0MQ 自动允许 N 到 M 个网络;只需将每个订阅者连接到每个发布者。这可能会成为管理负担,在这种情况下,您可以使用所有发布者和订阅者都连接到的简单代理,请参阅http://zguide.zeromq.org/page:all#toc36

【讨论】:

  • 那个链接坏了;搜索 wuproxy 示例。您最终会得到 7 个线程参与传输每条消息(发送者 -> PUB 套接字 -> SUB 套接字 -> 代理 -> PUB 套接字 -> SUB 套接字 -> 接收者),您仍然必须处理消息的序列化和过滤自己键入,所以 zmq 目前不能替代像 ROS 这样的中间件(尽管你可以在 zmq 之上编写一个)
  • 你如何“连接到每个出版商”?想想 AWS Auto Scaling 组。查询 IP 地址,连接到它们中的每一个,并协调消息何时开始发送,在新发布者来来去去时添加/删除。没有。通过。
【解决方案3】:

我用 C 语言做了一个简单的例子,它使用内置的 zmq 转发器设备将消息从 N 个发布者转发到 N 个订阅者。代码可在https://gitorious.org/hellozmq 获得

【讨论】:

  • 谢谢,但不感谢。当那个单一的盒子倒下时,一切都会倒下。下一步。
  • 好的,但如果单点故障是主要问题。所有 N 个订阅者都可以直接连接到 N 个发布者,并且代理可以充当目录服务。
猜你喜欢
  • 1970-01-01
  • 2019-04-20
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 2014-07-08
  • 2015-02-17
相关资源
最近更新 更多