【问题标题】:ZeroMQ PUB/SUB filtering and performanceZeroMQ PUB/SUB 过滤和性能
【发布时间】:2012-03-30 08:13:00
【问题描述】:

我正在尝试使用 zeromq PUB/SUB(python eventlets) 实现代理。 zeromq 2.1 似乎没有在发布者处实现过滤,所有消息都广播给所有订阅者,而订阅者又应用过滤器。是否有某种解决方法可以在发布者处实现过滤。如果有约 25 个发布者和 25 个订阅者交换 msgs @ max rate of 200 msgs per second where msg_size ~= 5K through the broker,那么性能有多糟糕。

是否有任何开源且经过良好测试的零 mq 代理实现??

【问题讨论】:

    标签: python zeromq


    【解决方案1】:

    您有 3 个问题:

    • 我可以在发布者过滤自己吗? - 是的
    • 向 25 个节点发送 200 m/s 的性能有多差? - 这取决于您的消息有多大。但是不,在那个范围内,你不会有任何问题。当您开始最大化 IO 吞吐量时,问题就出现了(1 gbit/s / 8 = 125 MiB/s。125*.7(开销)= 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 设备进行通信?

    【讨论】:

    • 谢谢。我已经更新了这个问题。我期待 max_size ~= 5K。它可能不是 25 个不同的节点。一些发布/订阅服务将在同一节点本身运行。如何使用 zeromq 2.1 本机功能在发布者本身进行过滤??
    【解决方案2】:

    zeromq 3.1 包括发布端过滤。

    zeromq 在他们所谓的设备中包含了代理的概念。您可以在大约 3 行代码中设置一个。见http://zguide.zeromq.org/page:all#Built-in-Devices

    【讨论】:

      【解决方案3】:

      来自 ØMQ 指南:

      从 ZeroMQ v3.x 开始,当使用连接协议(tcp://ipc://)时,过滤发生在发布者端。使用epgm:// 协议,过滤发生在订阅者端。在 ZeroMQ v2.x 中,所有过滤都发生在订阅者端。

      【讨论】:

        猜你喜欢
        • 2015-04-21
        • 2015-09-10
        • 2012-05-12
        • 2013-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多