Jak mogę skalować socket.io?

Powiedzmy, że serwer pobiera 10 000 jednoczesnych połączeń (poprzez socket.io). to dużo, a jak już nie wytrzyma to muszę podkręcić inny serwer.

Jak mogę zsynchronizować dwa serwery razem z ich socket.io?

Author: TIMEX, 2011-05-10

2 answers

Możesz spróbować użyć na przykład modułu cluster i rozdzielić obciążenie na wiele rdzeni(w przypadku, gdy masz wielordzeniowy procesor). Jeśli to nie wystarczy, możesz spróbować użyć reverse proxy do dystrybucji żądań na wielu serwerach i redis jako centralnego magazynu danych sesji (jeśli jest to możliwe dla Twojego scenariusza).

 3
Author: yojimbo87,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-10 07:31:45

Nie użyłbym klastra do skalowania Socket.IO. Socket.IO 0.6 jest zaprojektowany jako pojedynczy serwer procesowy i wykorzystuje długie żywe połączenia lub połączenia sondażowe w celu uzyskania połączenia w czasie rzeczywistym między serwerem a klientem.

Jeśli umieścisz klaster na swojej socket.io klient będziesz zasadniczo dystrybuować transporty ankiet między różnymi serwerami, którzy nie są świadomi klienta. Spowoduje to zerwanie połączeń. Ale także nadawanie do wszystkich klientów będzie ból, ponieważ wszystkie są rozprowadzane na różnych serwerach i nie masz IPC między nimi.

Więc radziłbym tylko używać klastra, jeśli używasz tylko połączeń z gniazdami sieciowymi i gniazdami Flash i nie musisz korzystać z funkcji transmisji.

Więc co powinieneś zrobić?

Możesz poczekać aż socket.io 0.7 jest zwolniony, który jest zaprojektowany od podstaw do wykorzystania w wielu procesach.

LUB możesz użyć pub / sub do wysyłania wiadomości między różnymi serwerami.

 42
Author: 3rdEden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-10 07:17:33