2012-04-11 2 views
0

이 (이미지) 시나리오를 사용하는 소켓 프로그래밍을 사용하는 응용 프로그램이 있습니다. Inter-server Communication 클라이언트 수가 브로드 캐스트 서버에 연결하려고하는 경우. 여기 LVS (로드 밸런서)를 통해로드를 관리합니다. 예를 들어 그림에서 볼 수 있듯이 200 클라이언트가 브로드 캐스트를 위해 로그인하려면 서버 1에 100 명의 사용자로 배포되고 서버 2 클라이언트의 다른 100 명의 사용자는 TCP 연결을 사용하여 서버에 연결됩니다.Java에서 TCP 서버 간의 상호 통신

힙 메모리에 저장 될 arraylist의 사용자 정보를 유지하고 있습니다. 이제 클라이언트가 로그인 한 모든 사용자에게 브로드 캐스팅하려고하지만 특정 클라이언트가 서버 1에 로그인하면 문제가 발생합니다. 클라이언트는 서버 2에서 100 명의 다른 사용자를 브로드 캐스팅 할 수 없습니다. 두 서버 모두 서로 상태에 대해 알지 못하기 때문입니다.

원하는대로이 시나리오를 해결하도록 제안하십시오.

+0

다른 서버로 메시지를 보내고 사용자에게 메시지를 보냅니 까? – zapl

답변

0

두 서버가 서로 로그인하고 브로드 캐스트가 다른 서버로 전달 된 다음 해당 서버의 클라이언트로 전달되도록합니다.

+1

서버를 추가 할 경우이 논리가 실패 할 수 있습니다. – Java

+0

왜? 각 서버가 모든 서버 목록에 액세스 할 수 있고 자체를 제외한 다른 모든 서버에 로그인하는 경우 작동하지 않습니까? 128 개의 서버가 있더라도 서버 간 통신에 사용되는 서버 당 128 개의 클라이언트 연결 만있을 뿐이며 '실제'클라이언트를 위해 남아 있습니다. 또는 서버 통신을 데이지 체인 연결할 수 있으므로 서버 당 하나의 클라이언트 연결 만 사용됩니다. 이 서버들은 로컬 LAN에 있습니다. UDP 브로드 캐스트 또는 TCP 멀티 캐스트를 사용하여 브로드 캐스트를 배포 할 수 있습니다. 서버가 동일한 백플레인에 연결되어 있고 고속 버스가 있습니까? 나는 모른다 .. –

+0

또는 모든 서버가 로그인하고 연결된 클라이언트 - 서버에 요청을 배포하는 마스터 서버를 생성 – zapl

관련 문제