При проектировании архитектуры клиент / сервер, есть ли преимущество в мультиплексировании нескольких соединений из одного процесса на удаленный сервер (т. Е. Совместное использование одного соединения) по сравнению с открытием одного соединения на поток / сеанс в клиенте (как это обычно делается, когда подключение к memcached или серверам баз данных.)
Я знаю, что с каждым соединением связаны некоторые издержки (например, если на сервере 50000 открытых соединений, которые занимают много оперативной памяти), это было одной из основных причин, по которым Facebook сделал UDP-патч для memcached. Но я не ожидаю, что где-нибудь рядом с этим числом. Может быть, не более 10000. Существует также экономия на установлении соединения tcp / ip и выполнении авторизации, но сейчас я бы предпочел оставить авторизацию для программного обеспечения брандмауэра, как это делает memcached.
Есть ли причины для реализации мультиплексирования соединений в клиент-серверном приложении tcp / ip с соединениями менее 10 КБ?
Редактировать - Подробности :
Это для сервера базы данных / клиента, над которым я работаю. Я думаю, что Informix и Oracle на самом деле допускают мультиплексирование сеансов через одно соединение TCP / IP. В документации Informix говорится, что вы можете получить улучшение производительности для многопоточных клиентов (без упоминания о многопоточных клиентах, возможно, это не поточно-ориентированная реализация).