2017-10-09 3 views
2

websockets 님과 간단한 대화를 작성하려고합니다. 또한 채팅중인 현재 활성 사용자를 표시하고 여기에서 문제가 시작되는 곳을 알려줍니다. 웹 팜을 사용합니다.웹 농장의 활성 연결

사용자는 loadbalancer을 통해 서버에 연결할 수 있습니다. 새 연결이 서버에 도달하면 SQL database의 카운터를 증가시키고 팜의 다른 서버에 rabbit MQ을 통해 알립니다.

다른 모든 서버는 새 데이터를 가져 와서 해당 번호를 연결된 사용자에게 다시 보냅니다.

사용자가 연결을 끊으면 다음과 같은 상황이 발생합니다. 서버가 SQL 데이터베이스의 카운터를 줄이고 rabbit MQ을 통해 다른 모든 서버가이 사실을 알게됩니다.

하지만 서버가 죽으면 어떻게됩니까? 예 :, 10 명의 사용자가이 서버에 연결됩니다. 해당 서버가 다운되면 모든 사용자의 연결이 끊어 지지만 더 이상 데이터베이스에서 업데이트되지 않습니다.

웹 팜의 총 활성 사용자 수를 얻는 가장 좋은 해결책은 무엇입니까? 그리고이 금액이 변경되었을 때 사용자에게 알리시겠습니까?

미리 감사드립니다. BTW, 우리는

답변

1

signalr 나는 전형적인 방법은 노드가 비동기 메쉬에서 분리 처리 할 생각 사용하고

오 하트 비트/연결 유지 메커니즘을 구현하는 것입니다. 이 경우 하트 비트 메시지는 서버 사이에 있으며 사용자가 어떤 서버에 연결되어 있는지에 대한 액세스 가능한 레코드가 있어야합니다. 서버가 일정 시간 동안 하트 비트를 생성하지 않으면 다른 모든 서버가 레코드를 갱신하고 서버와 연관된 모든 사용자를 연결 해제 된 것으로 표시 할 수 있습니다.

사용자 (SQL 데이터베이스 또는 모든 서버가 Rabbit MQ 메시지를 수신 대기)를 추적하는 방법에 대한 몇 가지 옵션이있는 것처럼 보입니다. 심장 박동에 관해서는, 직접 구현하거나, 발란스 발란스의 검출 방법이 이용 될 수 있는지 알아보기 위해 시도 할 수 있습니다.