搜索具有多路复用的C/C 网络库

Searching for C/C++ network library with multiplexing

本文关键字:网络 复用 多路 搜索      更新时间:2023-10-16

我正在编写一个应用程序,该应用程序具有在两个实例之间并行运行的数字(数百)并发网络操作。由于连接的平均寿命很短(最多几秒),所以我认为使用许多TCP连接并每次进行握手的开销(尤其是对于TLS握手)太大了。

我开始查看实现多重交易的几个协议和库(如该问题的回答所述,大多是Apache Qupid,RabbitMQ等AMQP实现)。然而,它们似乎都在TCP上运行,TCP引入了一些开销,并且没有很多意义(这篇文章很好地解释了问题,得出的结论是,TCP多重速度是愚蠢的)。而且所有人都感到非常胖,我更喜欢小而轻的东西(不幸的是,Zeromq并没有实现多重AFAIK)。这让我想到使用UDP是否是一种选择。当然,必须正确实施恢复和ACK等内容,但是,在有关连接上多个流的知识中,比简单地使用TCP更有效。

您认为我上面的理由是正确的,还是我错过了重要的东西?是否有任何好的C/C 库可以通过UDP实现多路复用?

做可能有效的最简单的事情,并且只能在必要时使其更复杂:

  1. 在其上使用单个TCP连接和多重逻辑会话

    • 例如,如果这些逻辑实体只是异步请求/响应对,例如,您可以完全分配明确的逻辑会话
  2. 如果在每个实例中都有多个并发组件,那么确实需要自己的队列,以倒退才能节气门过度吸引发件人:

    • 首先考虑仅在发送方限制未偿请求/活动会话的数量,而不是需要特定的ACK
    • 仅当您需要动态变化的队列长度时(例如。
  3. 仅当您遇到逻辑会话确实与TCP互动不佳的情况下,然后考虑实现自己的可靠流量控制Datagram协议