로그인 서버를 게임 서버와 분리해야합니까?


15

MMO 서버를 만들려고 생각하고 있으며 다른 게임이 네트워크를 어떻게 구성하는지 살펴 보았습니다. 내가 알아 차린 것 중 하나는 항상 로그인 서버가 있고 게임 서버가 있다는 것입니다.

이 작업을 수행해야하는지 여전히 결정하고 있지만 먼저 의견을 듣고 싶습니다. 이것의 장점은 무엇이며, 로그인 서버는 게임 서버와 통신하여 로그인을 어떻게 처리합니까?


1
"MMO에서로드 밸런싱은 어떻게 이루어 집니까?"라는 질문 재미있을 수 있습니다 : gamedev.stackexchange.com/q/5956/450
Hendrik Brummermann

답변:


15

나는 이것이 로그인과 게임 처리가 논리적으로 다소 독립적이기 때문에 발생한다고 생각합니다. 따라서 더 나은 분리, 쉬운 유지 관리 및 확장 성을 위해 일반적으로 분리되어 유지됩니다. 서로 다른 물리적 서버에 상주 할 필요는 없으며 동일한 머신에서 독립적 인 서비스뿐만 아니라 실행할 수도 있습니다. 트래픽이 너무 커지면 로그인 서버를 다른 컴퓨터로 쉽게 이동할 수 있습니다.

또한 로그인 서버는 공격 경로 일 가능성이 있으므로 보안 관점에서 분리하는 것이 좋습니다.

내부적으로 서로 다른 서버 측 서비스는 일반 소켓을 사용하여 동일한 시스템이나 클러스터의 다른 시스템에서 서로 통신 할 수 있습니다. 또는 데이터베이스 서버를 사용하여 각 사용자에 대해 '로그인'플래그를 유지 보수 할 수 있습니다.


대부분의 경우 게임 서버 db와 loginserver db 내부에 이러한 플래그가 표시되므로 로그인 서버가 서로를 확인할 수 있으며 logindb! = gamerserverdb 인 경우 사용자가 로그 아웃됩니다.
daemonfire300

10

MMO 개발에서 매우 중요한 측면 중 하나는 확장 성을 달성하고로드 밸런싱을 허용하는 것입니다.

자격 증명, 금지 상태, 최근 로그인 실패 횟수 등을 확인하여 사용자를 인증하는 것은 게임 논리 나 게임 데이터를 전혀 몰라도 할 수있는 작업입니다. 따라서 자체 서버 클러스터로 이동하는 것이 매우 쉽습니다.

또한 로그인 서버는 클라이언트가 접속할 수있는 잘 알려진 "입구"입니다. 인증에 성공하면 클라이언트를 게임 서버 클러스터의 해당 서버로 발송할 수 있습니다. 이 디스패치는 네트워크 연결을 올바른 게임 서버로 전달하거나 클라이언트에게 올바른 게임 서버에 대한 새 연결을 열도록 지시하여 수행 할 수 있습니다.

초기 배포를 위해 시스템을 자르는 것에 대해 생각해야합니다. 한 서버에서 여러 조각을 실행하는 것은 매우 쉽습니다. 그러나 하나의 단위로 개발 된 것을 분리하는 것은 매우 어렵습니다.


2

전 와우 플레이어로서 로그인 서버는 항상 체인에서 가장 약한 링크였습니다.

세계 서버는 일반적으로 뛰어난 안정성 (예 : 새로운 확장 팩 릴리스)을 잘 처리 할 수있었습니다.

그러나 로그인 서버는 그다지 잘 대처하지 못하는 것처럼 보였으며 세계 서버가 괜찮은 동안 자주 다운되었습니다. (공격 / 던전에서 연결이 끊어지면 다시 들어갈 수 없지만 다른 플레이어가 당신을 기다리고 있음을 의미합니다!)

WoW 로그인 시스템이 Battle.Net에 통합되었으므로 Starcraft 2는 WoW에 과부하가 걸리면 사용할 수 없게됩니다 (대격변이 시작된 후 몇 시간 동안 발생)

따라서 사용자 수가 매우 많은 게임을 제작하는 경우 로그인 시스템의 확장 성과 성능도 매우 중요합니다.


1
로그인 서버는 암호에 대한 무차별 대입 공격의 주요 대상이므로 상당히 많은 부하를 처리 할 수 ​​있어야합니다. 특히 게임이 인기가 많으면 공격자가 사용자 이름을 정상적으로 무작위로 추측하는 것 외에도 봇넷을 사용하기 시작합니다 (IP 주소 당 속도 제한을 방지하기 위해).
Hendrik Brummermann

로그인에 실패하고 플레이어를 세계에 배치하는 데는 여러 가지 이유가있을 수 있습니다. 로그인 서버 / 계정 데이터베이스 일 수 있습니다. 그러나 데이터베이스에서 플레이어 정보를로드하지 못하면 발생할 수 있습니다. 또는 플레이어를 월드 서버, 채팅 서버로 디스패치하는 시스템 장애로 인해 내부 방화벽은 여전히 ​​알려진 연결을 처리 할 수 ​​있지만 규칙 세트를 적용하여 새 연결을 결정하지 못할 수 있습니다. 플레이어를 세계에 플레이하는 것은 일단 들어가면 상호 작용하는 것보다 훨씬 복잡합니다.
Hendrik Brummermann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.