每个会话连接或通过一个连接复用多个会话

Connection per session or multiplexing multiple sessions through one connection

本文关键字:会话 连接 一个 复用      更新时间:2023-10-16

在设计客户端/服务器架构时,将来自同一进程的多个连接多路复用到远程服务器(即共享一个连接)与在客户端中每个线程/会话打开一个连接(如连接到memcached或数据库服务器时通常所做的那样)是否有任何优势?

我知道每个连接都有一些开销(例如,如果服务器有50,000个打开的连接,这会耗尽大量RAM),这是facebook为memcached做UDP补丁的一个主要原因。但我不期望有接近这个数字的任何地方。最多1万吧。在建立tcp/ip连接和进行授权方面也有节省,但现在我宁愿像memcached那样将授权留给防火墙软件。

有任何理由在tcp/ip客户端/服务器应用程序中实现少于10K的多路连接吗?

Edit - Details:

这是一个数据库服务器/客户端我正在工作。我认为Informix和Oracle实际上允许在一个tcp/ip连接上进行会话多路复用。在Informix文档中,他们说您可以获得非线程客户机的性能改进(没有提到多线程客户机,也许它不是线程安全的实现)

与每个线程/会话打开一个连接相比,多路复用多个连接有什么优势吗

是的,尽管这取决于单纯形的实现。您可能知道FTP、SIP等防火墙的麻烦,特别是在中途使用加密时。这就是影响是使用多个连接还是只使用一个连接的因素。