2

好吧,不计算以太网速度(Infinitband)、内核绕过或任何其他花哨的东西,只是普通的 TCP/IP(以太网上的 TCP/UDP)网络。可以将消息从主机 A 传递到主机 B 的最快消息队列实现是什么?

让我们假设 10G 以太网卡将两台机器与最新架构和 CPU 连接起来。对于 1472 字节的消息(MTU - IP/UDP 标头),我们在这里谈论的延迟是多少微秒?


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

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

4

3 回答 3

3

如果您在两者之间不需要代理,0MQ 为我们提供了最佳性能(您需要在您的平台/用例上测试数字)。如果在两者之间使用代理,则 ActiveMQ 和 RabbitMQ 都在同一范围内执行。使用 Redis 作为消息服务器对我们来说并不适用。
如果不使用消息服务器,Netty、J-groups 等选项可能有用(不确定您的编程语言)。

如果使用直接套接字连接,您也可以研究可靠的 UDP。

希望能帮助到你。

于 2012-09-03T02:48:35.630 回答
1

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

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

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

于 2012-08-29T12:39:35.537 回答
0

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

于 2015-07-08T21:05:32.397 回答