在设计客户端/服务器体系结构时,将多个连接从同一进程多路复用到远程服务器(即共享一个连接)与在客户端中为每个线程/会话打开一个连接是否有任何优势(通常在连接到memcached或数据库服务器。)
我知道每个连接都会产生一些开销(例如,如果服务器有50,000个打开的连接占用了大量的RAM),这就是facebook为memcached创建UDP补丁的一个主要原因。但我不希望有任何接近这个数字的地方。也许最多10,000。建立一个tcp / ip连接并进行授权也有节省,但是现在我宁愿像memcached那样将防火墙软件授权给它。
有没有理由在连接少于10K的tcp / ip客户端/服务器应用程序中实现多路复用连接?
修改 - 详细信息:
这是我正在处理的数据库服务器/客户端。我认为Informix和Oracle实际上允许通过一个tcp / ip连接进行会话多路复用。在Informix文档中,他们说你可以获得非线程客户端的性能提升(没有提到多线程客户端,也许它不是一个线程安全的实现。)
答案 0 :(得分:1)
复用多个连接与每个线程/会话打开一个连接有什么好处
是的,虽然这取决于单纯形的实现。您可能知道防火墙的麻烦,例如FTP,SIP等,特别是在中途使用加密时。这是影响决定是使用多个连接还是仅使用一个连接的原因。