그러면 매핑 DB를 액세스할 때 어느 샤드에 뭐가 있는지를 알아야 하겠죠? 이때는 앞서 배운 해시 함수나 일관적인 해시 알고리즘을 사용합니다.
이제 최종적으로 로그인을 담당하는 서버가 분산 처리된 형태는 다음과 같습니다.
• 로그인 서버
• 매핑 DB 서버 샤드
• 플레이어 정보를 담은 DB 서버 샤드
이것의 프로세스 시퀀스는 이렇습니다.
1. 클라이언트는 인증 서버 중 하나에 접속합니다.
2. 인증 서버는 매핑 데이터베이스 중 하나를 골라 유저 ID에 대응하는 데이터베이스 #ID를 얻는 질의를 던집니다.
3. 인증 서버는 해당 DB에 CRUD 질의를 던집니다.
분산 처리 구조의 서버를 만들기로 했다면, 클라이언트는 로그인 서버와 용무를 끝낸 후 다른 서버의 용무를 해야 할 것입니다. 클라이언트는 다른 서버와 접속할 때 또 로그인을 해야 합니다. 이렇게 되면 모든 서버가 로그인 로직을 가지고 있어야 한다는 말인데, 그러면 결국 데이터베이스에 부하가 걸릴 수밖에 없습니다.
이를 해결하는 방법을 알아봅시다. 로그인 서버에서 한 번 인증이 된 후 클라이언트는 다른 서버에 접속을 할 텐데, 로그인 서버는 그 서버에 인증 정보를 전달하는 방법입니다.