Подтвердить что ты не робот

Как я могу масштабировать socket.io?

Скажем, сервер получает 10 000 одновременных подключений (через socket.io). Это много, и если он не может справиться больше, мне нужно развернуть еще один сервер.

Как синхронизировать два сервера вместе со своим socket.io?

4b9b3361

Ответ 1

Вы можете попытаться использовать, например, cluster модуль и распределить нагрузку на несколько ядер (в случае, если у вас многоядерный процессор). В случае, если этого недостаточно, вы можете попытаться использовать обратный прокси для распространения запросов на нескольких серверах и redis в качестве хранилища данных центрального сеанса (если это возможно для вашего сценария).

Ответ 2

Я бы не использовал Cluster для масштабирования Socket.IO. Socket.IO 0.6 спроектирован как единый сервер процессов и использует длинные живые соединения или опросные соединения для достижения реального времени между сервером и клиентом.

Если вы кладете Cluster infront вашего клиента socket.io, вы будете в основном распространять опросы между различными серверами, которые не знают о клиенте. Это приведет к поломке соединений. Но также передача всем вашим клиентам будет больно, поскольку все они распространяются на разных серверах, и у вас нет IPC между ними.

Поэтому я бы посоветовал использовать Cluster, если вы используете только соединения Socket и Flash Socket и не должны использовать функции широковещания.

Итак, что вы должны делать?

Вы можете подождать, пока не будет выпущен socket.io 0.7, который разработан с нуля, чтобы использоваться для нескольких процессов.

Или вы можете использовать pub/sub для отправки сообщений между разными серверами.