从主机A向主机B发送消息的最快(最低延迟)消息队列解决方案是什么?

时间:2012-08-29 04:51:43

标签: real-time messaging rabbitmq message-queue zeromq

好的人,不计算以太网速度(Infinitband),内核旁路或任何其他奇特的东西,只是普通的TCP / IP(以太网上的TCP / UDP)网络。什么是可以从主机A向主机B传递消息的最快的消息队列实现?

让我们假设10Gigabits以太网卡将两台机器连接到最新的架构和CPU。我们在这里谈论1472字节消息(MTU - IP / UDP报头)的微秒延迟是什么时间?


正如@Sachin所描述的那样,我正在寻找的是消息队列和延迟数,以便将消息从A发送到B,如下所示:

主机A< ------- TCP ------->消息队列(进程,路由等)< ------- TCP ------->主持人B

3 个答案:

答案 0 :(得分:2)

如果您之间不需要经纪人,0MQ给了我们最佳性能(您需要测试平台/用例上的数字)。如果在中间使用经纪人,则ActiveMQ& RabbitMQ在相同的范围内执行。使用Redis作为消息服务器并没有阻止我们 如果不使用消息传递服务器,Netty,J-groups等选项可能会有用(不确定您的编程语言)。

如果使用直接套接字连接,您可以查看可靠的UDP。

希望它有所帮助。

答案 1 :(得分:1)

下限是至少2个TCP连接和消息队列服务器内的路由时间(意味着与这些连接相关的延迟)

主机A< ------- TCP ------->消息队列(进程,路由等)< ------- TCP ------->主持人B

当然,如果你建立冗余,容错等,那么你肯定会超越这个下限。

答案 2 :(得分:0)

看起来你在谈论基于UDP的MQ,因为你提到了MTU。好吧,对于基于UDP的MQ,这个时间通常被测量为发布消息并在消息总线中查看它所需的时间。所以这是一个往返时间,而不是你所描述的单向时间。这通常可以在不到6微秒的时间内完成,具体取决于您选择的LAN。