2012-07-01 9 views
7

Stworzyłem aplikację nodejs, która działa dobrze w jednym rdzeniu. Ta aplikacja używa gniazda socket.io do szybkiej komunikacji w trybie &.Dobry sposób na użycie socket.io z klastrem na wielordzeniowym serwerze?

Teraz chciałem skalować aplikację w pionie, umożliwiając jej uruchamianie w systemie wielordzeniowym przy użyciu modułu cluster w nodejs.

Wszystko w mojej aplikacji przechowuje dane w Redis, dlatego nie ma problemu z niektórymi podstawowymi danymi sesji &.

Jednak, gdy spawnuję wiele procesów roboczych przy użyciu klastra, wydaje się, że każdy pracownik ma własną obsługę gniazd.

Załóżmy na przykład, że istnieje pokój rozmów nazywany "pokojem gościnnym".

Użytkownik A i użytkownik B łączy się z pokojem i są przydzielani do różnych procesów roboczych.

Ponieważ są one w różnych procesach i te procesy nie współdzielą nasłuchiwania gniazd, nie ma sposobu, aby użytkownik A i użytkownik B rozmawiali ze sobą.

Jakie jest dobre podejście do rozwiązania tego problemu? Czy socket.io obsługuje system wielordzeniowy?

Czy socket.io jest przeznaczony tylko do użytku z jednym rdzeniem?

+3

można uruchomić socket.io z 'RedisStore' do skalowania nad procesami/serwery. Zobacz [ta moja poprzednia odpowiedź] (http://stackoverflow.com/questions/9267292/examples-in-using-redisstore-in-socket-io/9275798#9275798) dla większej głębi. –

Odpowiedz

3

Możesz użyć socket.io jak zwykle, ale z magazynem redis w tle. Będzie także obsługiwać wiele instancji na socket.io bez żadnej zewnętrznej biblioteki. Obsługuje nawet pokoje w wielu instancjach.

Link do jak skonfigurować socket.io z REDiS: Using Multiples Nodes/Processes with socket.io

+0

Myślę, że ten link tak naprawdę nie wskazuje miejsca, w którym myślałeś, że jest. – funerr

+0

Też myślę. Pozwól mi to edytować. –

Powiązane problemy