[REDIS] 수평 레디 스와 socket.io를 확장
REDIS수평 레디 스와 socket.io를 확장
저는 현재 다음과 같은 수평 확장 socket.io 서버를 만드는 오전 :
LoadBalancer (nginx)
Proxy1 Proxy2 Proxy3 Proxy{N}
BackEnd1 BackEnd2 BackEnd3 BackEnd4 BackEnd{N}
그들은 모두 같은 레디 스 서버에 연결되어있는 경우 내 질문은 소켓 IO 레디 스 모듈은, 내가 백엔드 서버 중 하나에서 프록시 서버 중 하나에 연결된 특정 소켓에 메시지를 보낼 수와, 무엇입니까? 이 경우 엔 어떻게해야하나요?
해결법
-
==============================
1.당신이 socket.io 서버를 확장 할 완, 당신은 부하 분산 장치로 사용의 nginx을 가지고, 설치 고정로드 밸런싱을하는 것을 잊지 마세요, othersie 하나의 연결이 socket.io 서버에 대한 연결을 통과 분산 부하에 따라 여러 서버에 연결됩니다. 그래서 더 나은 고정로드 밸런싱을 사용하는
당신이 socket.io 서버를 확장 할 완, 당신은 부하 분산 장치로 사용의 nginx을 가지고, 설치 고정로드 밸런싱을하는 것을 잊지 마세요, othersie 하나의 연결이 socket.io 서버에 대한 연결을 통과 분산 부하에 따라 여러 서버에 연결됩니다. 그래서 더 나은 고정로드 밸런싱을 사용하는
레디 스 팝 / 하위 구현의 도움으로 하나 개 이상의 socket.io 서버와 레디 스 소켓 IO 어댑터를 보내고받을 수있는 메시지와 함께.
당신이 프록시 및 백엔드에 사용되는 기술 말해 경우에, 나는 당신이 더 많은 정보를 알려 드릴 것입니다.
-
==============================
2.socket.io - 레디 스는 연결된 사용자의 동일한 풀을 공유하여 백엔드 서버의 모든 모듈입니다 사용. 당신은 Backend1에서 방출 할 수 있으며 클라이언트가 Backend4에 연결되어있는 경우 그 메시지를 받게됩니다.
socket.io - 레디 스는 연결된 사용자의 동일한 풀을 공유하여 백엔드 서버의 모든 모듈입니다 사용. 당신은 Backend1에서 방출 할 수 있으며 클라이언트가 Backend4에 연결되어있는 경우 그 메시지를 받게됩니다.
그게 내가 클라이언트 커넥트하면, 그것은 동일한 시스템에 남아 있도록하지만 Socket.io이 작업에 대한 키의 nginx에 끈적 끈적한 세션을 사용하는 것입니다. 웹 소켓 여러 긴 폴링 스레드 시작 Socket.IO에 방법, 그들은 모든 필요가 제대로 작동하려면 동일한 백엔드 서버에 있어야하기 때문이다.
대신에 끈적 끈적한 세션으로, 당신은 WebSocket을를 사용하도록 클라이언트 연결 optons을 변경할 수 있으며, 하나 개의 연결, 하나의 웹 소켓이있을 것 같은이 여러 서버에 여러 개의 연결의 문제점을 제거합니다. 이것은 또한 앱이 대신 WebSocket을 긴 폴링 다운 그레이드 할 수있는 능력을 잃게 만들 것입니다.
from https://stackoverflow.com/questions/34217166/horizontally-scale-socket-io-with-redis by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 스프링 데이터의 2.0.x에서 RedisCacheManager을 만드는 방법 (0) | 2020.01.17 |
---|---|
[REDIS] ServiceStack 엔티티 ID 필드 이름 (0) | 2020.01.17 |
[REDIS] 셀러리 celerybeat 장고없이 데이터베이스 스케줄러를 사용할 수 있습니까? (0) | 2020.01.17 |
[REDIS] 이유는 동일한 연결에 PUB과 서브 역할을하는 하나의 레디 스 클라이언트를 가질 수 없습니다? (0) | 2020.01.17 |
[REDIS] 어떻게 레디 스 메모리 누수를 결정? (0) | 2020.01.17 |