gpt4 book ai didi

message-queue - ZeroMQ、RabbitMQ 和 Apache Qpid 的性能比较

转载 作者:行者123 更新时间:2023-12-03 05:18:25 27 4
gpt4 key购买 nike

我的应用程序需要高性能消息总线,因此我正在评估 ZeroMQRabbitMQApache Qpid 的性能。为了测量性能,我正在运行一个测试程序,该程序使用其中一个消息队列实现发布 10,000 条消息,并在同一台计算机中运行另一个进程来使用这 10,000 条消息。然后我记录发布的第一条消息和收到的最后一条消息之间的时间差。

以下是我用于比较的设置。

  1. RabbitMQ:我使用了“扇出”类型的交换器和具有默认配置的队列。我使用了 RabbitMQ C 客户端库。
  2. ZeroMQ:我的发布者使用 ZMQ_PUSH 套接字发布到 tcp://localhost:port1,我的代理监听 tcp://localhost:port1 并将消息重新发送到 tcp://localhost:port2,我的消费者使用 ZMQ_PULL 套接字监听 tcp://localhost:port2 。我在 ZeroMQ 中使用代理而不是点对点通信,以使性能比较与使用代理的其他消息队列实现公平。
  3. Qpid C++ 消息代理:我使用了“扇出”类型交换器和具有默认配置的队列。我使用了 Qpid C++ 客户端库。

以下是性能结果:

  1. RabbitMQ:接收10000条消息大约需要1秒。
  2. ZeroMQ:接收 10,000 条消息大约需要 15 毫秒。
  3. Qpid:接收10000条消息大约需要4秒。

问题:

  1. 有人在消息队列之间进行过类似的性能比较吗?然后我喜欢将我的结果与你的进行比较。
  2. 有什么方法可以调整 RabbitMQQpid 以使其性能更好吗?

注意:

测试是在分配了两个处理器的虚拟机上完成的。对于不同的硬件,结果可能会有所不同,但我主要对 MQ 产品的相对性能感兴趣。

最佳答案

RabbitMQ 可能正在对这些消息进行持久化。我认为您需要设置消息优先级或消息中的其他选项以不进行持久化。届时性能将提高 10 倍。您预计每秒至少有 100K 条消息通过 AMQP 代理。在 OpenAMQ 中,我们的性能高达 300K 消息/秒。

AMQP 是为了速度而设计的(例如,它不会解包消息来路由消息),但 ZeroMQ 在关键方面设计得更好。例如。它通过在没有代理的情况下连接节点来删除一跳;它比任何 AMQP 客户端堆栈都具有更好的异步 I/O 性能;它执行更积极的消息批处理。也许构建 ZeroMQ 的 60% 时间都花在了性能调优上。这是非常辛苦的工作。它的速度更快并非偶然。

我想做但太忙的一件事是在 ZeroMQ 之上重新创建一个类似 AMQP 的代理。这里有第一层:http://rfc.zeromq.org/spec:15 。整个堆栈的工作方式有点像 RestMS,传输和语义分为两层。它将提供与 AMQP/0.9.1 大致相同的功能(并且在语义上可互操作),但速度明显更快。

关于message-queue - ZeroMQ、RabbitMQ 和 Apache Qpid 的性能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com