ZeroMQ PUB / SUB过滤和性能

时间:2012-03-30 08:13:00

标签: python zeromq

我正在尝试使用zeromq PUB / SUB(python eventlets)实现代理。 zeromq 2.1似乎没有在发布者上实现过滤,并且所有消息都被广播给所有使用过滤器的订阅者。是否有某种解决方法可以在发布者处实现过滤。如果没有大约25个发布者和25个订阅者通过代理交换msgs_size~ = 5K的msgs @ max速率为200 msgs /秒,那么性能有多糟糕。

是否有经过充分测试的开源零零mq代理实现。??

3 个答案:

答案 0 :(得分:3)

您有3个问题:

  • 我可以在发布商处过滤自己吗? - 是的
  • 向25个节点发送200 m / s的性能有多糟糕? - 这取决于你的消息有多大。但不是,在这个价格范围内,您将不会遇到任何问题;当你开始最大化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 m / s的速度进行组播。
  • OSS ZMQ代理实施怎么样? - 它们不存在afaik - 但指南描述了如何使用Majordomo pattern创建可靠的“经纪人”。

您需要在问题中添加更多详细信息:

  • 要求?
  • 你的“糟糕表现”是什么?
  • 邮件大小?
  • 吞吐量要求?
  • 主干速度(10 gbit / s)?

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

答案 1 :(得分:3)

zeromq 3.1包括发布端过滤。

zeromq包含了他们称之为设备的经纪人的概念。您可以在~3行代码中设置一个。见http://zguide.zeromq.org/page:all#Built-in-Devices

答案 2 :(得分:2)

来自ØMQ指南:

  

从ZeroMQ v3.x开始,在使用连接协议(tcp://ipc://)时,发布方会进行过滤。使用epgm://协议,在用户端进行过滤。在ZeroMQ v2.x中,所有过滤都发生在用户端。