Если вы стремитесь к неблокирующему масштабируемому решению, я рекомендую использовать Kafka в качестве промежуточного уровня между сервером и клиентами.
Таким образом, клиенты отправляют syn c запросы на kafka и ждут сервера ответить.
Между тем на сервере работает многопоточная система потребителей, которая опрашивает (то есть потребляет) пользовательские запросы и отправляет ответы клиентам.
Итак, допустим, клиент Боб отправил запрос, он поставил в очередь в выделенной топике kafka c с миллионами других пользовательских запросов, ожидающих ответа.
Сервер обрабатывает все запросы в тяжелом режиме. load, в конце концов, попадает на событие Боба и, наконец, отправляет ответ через 5 секунд, теперь Боб получил ответ и может закрыть свой «сеанс» для этого запроса (нет фактического сеанса, такого как HTTP, но есть какой-то другой сжатый / закодированный формат, который вы выберете) .
Существуют меры безопасности, которые следует учитывать при выборе формата мероприятия и подробного способа связи, оставим это обсуждение на потом, так как ваш вопрос более базовый c.