Скажем, сервер получает 10 000 одновременных подключений (через socket.io). Это много, и если он не может справиться больше, мне нужно развернуть еще один сервер.
Как синхронизировать два сервера вместе со своим socket.io?
Скажем, сервер получает 10 000 одновременных подключений (через socket.io). Это много, и если он не может справиться больше, мне нужно развернуть еще один сервер.
Как синхронизировать два сервера вместе со своим socket.io?
Вы можете попытаться использовать, например, cluster модуль и распределить нагрузку на несколько ядер (в случае, если у вас многоядерный процессор). В случае, если этого недостаточно, вы можете попытаться использовать обратный прокси для распространения запросов на нескольких серверах и redis в качестве хранилища данных центрального сеанса (если это возможно для вашего сценария).
Я бы не использовал Cluster для масштабирования Socket.IO. Socket.IO 0.6 спроектирован как единый сервер процессов и использует длинные живые соединения или опросные соединения для достижения реального времени между сервером и клиентом.
Если вы кладете Cluster infront вашего клиента socket.io, вы будете в основном распространять опросы между различными серверами, которые не знают о клиенте. Это приведет к поломке соединений. Но также передача всем вашим клиентам будет больно, поскольку все они распространяются на разных серверах, и у вас нет IPC между ними.
Поэтому я бы посоветовал использовать Cluster, если вы используете только соединения Socket и Flash Socket и не должны использовать функции широковещания.
Итак, что вы должны делать?
Вы можете подождать, пока не будет выпущен socket.io 0.7, который разработан с нуля, чтобы использоваться для нескольких процессов.
Или вы можете использовать pub/sub для отправки сообщений между разными серверами.