我正在编写一个应用程序,该应用程序具有在两个实例之间并行运行的多个(数百个)并发网络操作。由于连接的平均寿命很短(最多几秒),我认为使用许多 TCP 连接和每次握手(尤其是 TLS 握手)的开销会太大。
我开始研究一些实现多路复用的协议和库(主要是AMQP实现,如Apache Qupid、RabbitMQ,如对此问题的回答中所述)。然而,它们似乎都在 TCP 上运行,这引入了一些开销并且没有多大意义(这篇文章很好地解释了这个问题,并得出结论 TCP 多路复用是愚蠢的)。而且他们都觉得很胖,我更喜欢小而轻的东西(ZeroMQ不幸的是没有实现多路复用afaik)。这让我开始思考是否可以选择使用 UDP。当然,必须正确实现恢复和 ACK 之类的东西,但要了解连接上的多个流,这应该比简单地使用 TCP 更有效。
你认为我上面的推理是正确的,还是我错过了一些重要的事情?是否有任何好的 C/C++ 库可以通过 UDP 实现多路复用?