RabbitMQ高速瞬态消息传递性能

时间:2010-01-23 18:36:27

标签: msmq rabbitmq tibco

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

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

感谢。

3 个答案:

答案 0 :(得分:14)

(我是一名兔子开发人员。)

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

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

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

答案 1 :(得分:4)

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

亚历

答案 2 :(得分:2)

我能想到的关于你的系统的最佳解决方案是ZeroMQ

它没有持久性,你说你不需要它,并且它非常快速和简单易用。

这不是AMQP实现(看起来你似乎也不需要)但正如它在this guide上所说的那样:

  

ØMQ(ZeroMQ,0MQ,zmq)看起来像一个可嵌入的网络库,但就像一个并发框架。它为您提供了套接字,可以在各种传输中传输整个消息,如进程内,进程间,TCP和多播。您可以使用扇出,发布 - 订阅,任务分发和请求 - 回复等模式连接N到N的套接字。它足够快,可以成为集群产品的结构。其异步I / O模型为您提供可扩展的多核应用程序,构建为异步消息处理任务。它有一系列语言API,可在大多数操作系统上运行。