То, о чем вы просите, кажется немного запутанным.
В ситуации с длинным опросом клиент делает HTTP-запрос, который направляется на определенный HTTP-сервер. Если никакие данные для удовлетворения этого запроса не будут немедленно доступны, запрос будет сохранен в течение некоторого длительного периода времени, и либо он в конечном итоге истечет время ожидания, а затем клиент выдаст еще один длинный запрос на опрос или некоторые данные станут доступными, и ответ будет возвращается к запросу.
Таким образом, вы не делаете эту работу в кластерах, пытаясь централизованно сохранять объекты запроса и ответа. Они относятся к определенному TCP-соединению между конкретным сервером и конкретным клиентом. Вы не можете их сохранить и использовать в другом месте, и это также не то, что помогает любой из этих работ с кластеризацией.
Что я думаю, что проблема кластеризации у вас здесь, так это то, что когда некоторые данные становятся доступными для конкретного клиента, вам нужно знать, на каком сервере у этого клиента есть длинный запрос на опрос, который в настоящее время живет, поэтому вы можете чтобы вернуть данные из этого запроса.
Обычный способ, которым вы это выполняете, - это какой-то идентификатор пользователя, который представляет каждый клиент. Когда какой-либо клиент подключается к длинному запросу опроса, это соединение является кластером, распределенным на одном из ваших серверов. Этот сервер, который получает запрос, затем записывает в центральную базу данных (часто redis), что этот userID userA теперь подключен к серверу12. Затем, когда некоторые данные становятся доступными для userA, любой агент может найти этого пользователя в магазине redis и увидеть, что пользователь в настоящее время подключен к серверу12. Таким образом, они могут поручить сервер12 отправлять данные пользователю A с использованием текущего длинного опроса для пользователя A.
Это всего лишь одна стратегия борьбы с кластеризацией - есть много других, таких как липкая балансировка нагрузки, алгоритмическое распределение, широковещательное распространение и т. Д. Вы можете увидеть ответ, который описывает some of the various schemes here.
Мне любопытно, почему «без использования Socket.io?» – mscdex
Это часть проблемы, заданной мне компанией. Я не могу помочь :) –