RabbitMQ高速瞬态消息传递性能

Kim*_*imi 8 tibco msmq rabbitmq

我们正在构建的系统是通过外部Feed接收数据.我们的工作是将这些数据分发到多个服务,运行计算并将结果转发到其他地方 - 典型的发布者 - 订阅者情况.我们需要的是一个非常低延迟的消息传递.我们不需要像MSMQ那样保留消息.

RabbitMq是否足够快速实现软实时消息传递?有没有基准?使用它而不是TIBCO Rendezvous是一个好主意吗?还有其他开源软实时消息替代方案吗?

谢谢.

Ton*_*nes 14

(我是一名兔子开发者.)

当轻载时,Rabbit通常会有大约100-400微秒的延迟,具体取决于网卡和CPU速度等.一旦加载变得更重,内部缓冲就会开始出现,延迟会略微增加.在带宽使用(每秒消息数,每秒字节数)开始变高之前,您可以放心地预计会有1ms的延迟.一旦引入持久性,自然会延迟.

关于基准测试,这里最大的问题之一是定义对您的应用程序重要的内容.Java客户端附带了一些简单的点对点和pub-sub延迟和吞吐量测量示例; 如果你有问题,请在rabbitmq讨论列表上询问!它们与实际应用程序的相关性并不高,但可能有助于消除您对延迟或吞吐量微基准测试的任何疑虑.

最后,现在有很多很好的开源消息传递和消息传递相关系统.仅在AMQP的世界中,除了RabbitMQ之外,还有Qpid和OpenAMQ.如果你能够限制自己使用Java(很多人都使用ActiveMQ获得成功),那里也有很好的开源JMS服务器.Ruby和Python系统也涌现出许多轻量级系统; 这些系统往往只专注于排队,而往往没有AMQP提供的灵活路由功能.


小智 5

您应该能够实现每个 CPU 每秒处理数万条消息。例如,我们的一项标准测试每秒将 25k 条消息从 Java 客户端推送到在四核 COTS debian 机器上运行的服务器,然后返回到客户端。客户端和服务器在同一台机器上运行,因此服务器上每秒处理 50k 条消息,客户端上每秒处理 50k 条消息。您可以通过在具有更多内核的专用机器上运行服务器来获得更高的速率。有关基于字节/秒的费率,请在 rabbitmq-discuss 邮件列表中询问。

亚历克西斯