2012-03-30 64 views
1

我想使用zeromq PUB/SUB(python eventlets)实现一个代理。 zeromq 2.1似乎没有在发布者处实现过滤,并且所有消息都被广播给所有应用过滤器的订阅者。是否有某种解决方法可以在出版商处实现过滤。如果没有约25个发布者和25个订阅者通过代理交换msg_size〜= 5K的每秒200个信息的msgs @ max速率,那么性能会有多糟糕。ZeroMQ PUB/SUB过滤和性能

是否有任何经过开源验证的零mq代理实现?

回答

3

你有3个问题:

  • 我能在发布者过滤器自己? - 是
  • 发送200 m/s到25个节点的性能有多糟糕? - 这取决于你的信息有多大。但是,不,在这个范围内,你将不会遇到任何问题;问题出现在你开始在IO吞吐量(1 gbit/s/8 = 125 MiB/s。125 * .7(verhead)= 87 MiB/s。87 MiB/5 KiB(每msg)= 17000 m/s在你开始填充你的IO容量之前,每个节点的速度是712 msg/s,但是如果你有这个问题,你可能只需要使用PGM并以17000米/秒的速度进行组播。 ?经纪人实现 - 他们不存在AFAIK - 但指南介绍了如何创建一个可靠的“经纪人”,与Majordomo pattern

您将需要投入更多的细节,你的问题:

  • R equirements?
  • 什么是你的糟糕表现?
  • 信息size?
  • 吞吐量要求?
  • 主干速度(10 gbit/s)?

这就是说,如果你需要一个经纪人,你为什么不使用RabbitMQ作为ZMQ设备与RMQ交谈?

+0

谢谢。我已经更新了这个问题。我期待max_size〜= 5K。它可能不是25个不同的节点。一些pub/sub服务将在同一个节点中运行。如何使用zeromq 2.1本地功能在发布者本身进行过滤 – Anoop 2012-03-30 10:14:42

+0

这不是2.1的功能。 – Henrik 2012-03-30 14:12:47

1

从ØMQ指南:

从ZeroMQ 3.x版,过滤使用已连接的协议(tcp://ipc://)时发生在发布侧。使用epgm://协议,过滤发生在用户端。在ZeroMQ v2.x中,所有的过滤都发生在用户端。