如果通信的两个进程在同一台机器上,我们会使用ZeroMQ而不是TCP套接字来加速吗



我知道0MQ在集群环境中应该比TCP套接字更快,我可以看到情况会如何(我认为这就是他们在0MQ网站上说"对于集群产品和超级计算,比TCP更快"时所指的)。然而,我会看到使用0MQ而不是TCP套接字在同一台机器上运行的两个进程之间进行通信的任何加速吗?

好吧,简短的版本是试一试。

稍长一点的版本是,编写TCP套接字可能很困难,有很多事情很容易出现问题,但0MQ保证消息将完整传递。它也是由网络套接字专家编写的,如果世界上有最好的意愿,你可能不是,他们使用了一些高级技巧来加快速度。

您实际上并不是在一台机器上运行,因为VM被视为一台独立的机器。这意味着TCP套接字必须在整个网络堆栈中运行,不能像在一台机器上的进程之间通信那样走捷径。

但是,您可以在ZeroMQ下尝试UDP多播,看看这是否会加快应用程序的速度。UDP在广域网上的可靠性较低,但在虚拟机与其主机通信的封闭环境中,您可以安全地跳过所有TCP可靠性方面的内容。

我想IPC应该比TCP更快。如果你愿意转向单一流程,INPROC肯定会更快。

我认为(尚未测试)答案是错误的,因为ZMQ可能使用相同的标准C库并添加了一些消息头。

UDP也是如此。

IPC管道也是如此。

ZMQ可能同样快,但由于它添加了标头,所以不太可能。

现在,如果你真的需要某种类型的头,而ZMQ已经比你更好地实现了它,那就另当别论了。喜欢消息大小或类型,但我跑题了。

相关内容

最新更新