2016-11-26 4 views
0

좋은 아침 모두,응용 프로그램 공유 통신 모범 사례? 난 그냥 로그인 섹션을 완료 <a href="https://i.stack.imgur.com/pFv4s.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/pFv4s.png" alt="enter image description here"></a></p> <p> : 구글 플레이에 클라이언트 인증이 토큰을 보내

나는 마음이 연결 아키텍처 클라이언트 - 서버 게임 응용 프로그램 작업입니다 + userid를 하나의 로그인 서버에 추가하면 로그인 서버는 google play로 데이터를 인증하고 해당 사용자의 데이터베이스에 세션을 만듭니다.

아이디어가 성공적으로 로그인하면 로그인 서버는 주 서버 중 하나와 대화하여 예상되는 클라이언트를 등록하고 로그인 서버에 대한 연결을 닫은 다음 클라이언트가 해당 서버에 연결합니다. 스케일링 및 현지화를 위해 여러 개의 메인 서버를 갖기를 원하지만, 클라이언트가 다른 메인 서버에있을 때 클라이언트 - 클라이언트 상호 작용을 관리하는 방법은 문제입니다. 가장 좋은 방법은 무엇입니까?

간단한 "친구 연결"알림 시스템에 대해 생각해 봅시다. 그래서 스키마의 모든 클라이언트가 친구이고, 클라이언트 2와 3이 이미 연결되어 있고, 클라이언트 1이 연결되어 있고, 주 서버는 온라인 상태와 Connected ServerID가 포함 된 친구 목록이있는 클라이언트 1 연결의 클라이언트 모델을 구축합니다. 온라인). 서버별로 온라인 친구를 그룹화하고 이러한 주 서버에 bulk friend_connected 패킷을 보내면 사용자에게 알립니다 (동일한 서버가 각 사용자에게 friend_connected를 보내는 경우).

모든 주 서버간에 TCP 소켓 연결을 만들어야합니까? 처음으로 다중 서버 구조를 구축했기 때문에 관리가 더 쉽고 간편한 방법인지는 확실하지 않습니다. 메인 서버 간의 메시징을 관리하기 위해 중간 서버에 대해 생각했지만 시스템에 수백 대의 서버가있을 때만 가치가 있으므로 각 메인 서버에는 가장 가까운 메시지 관리자에 대한 소켓이 하나만 있습니다.

클라이언트 - 클라이언트 통신이 없기 때문에 로그인 서버를 상호 연결할 필요가 없습니다. 연결 서버를 관리하고 클라이언트를 인증하고 세션을 설정하기 만하면됩니다.

답변