0

AWS에서 호스팅 할 예정인 Kryonet (Java TCP/UDP 네트워킹 라이브러리)을 사용하여 실시간 멀티 플레이어 모바일 게임을 만들고 있습니다.AWS에서 전용 EC2 인스턴스를 어떻게 확장합니까?

아키텍처는 다음과 같습니다. 클라이언트가 로그인하여 통계 등을 볼 수있는 중앙 로그인/계정 서버에 연결합니다.이 비트는 기본적으로 REST API 일 뿐이며 크기를 조정할 수 있으므로 쉽습니다 꽤 표준적인 방법으로 (당신이 어떤 webapp처럼).

그러나 재미있는 점은 플레이어가 실제로 경기를 할 때입니다. 이를 위해 별도의 "일치"서버 풀 (EC2)을 사용할 계획입니다. 로그인/계정 서버는 두 명의 플레이어를 연결 한 다음 클라이언트에게 특정 매치 서버의 주소를 보냅니다. 그러면 플레이어는 해당 경기 서버에 참가하게되며, 경기 서버는 경기를 호스트합니다 (아마도 5-10 분간 지속됩니다). 경기 서버는 게임의 실시간 인스턴스를 실행하고 실시간으로 UDP 패킷을 보내고받을 것이므로 고정적 일 필요가 있습니다. 각 일치 서버는 아마도 수백 개의 일치 항목을 호스팅 할 수 있습니다.

제 질문은이 경기 서버를 조정하는 방법에 관한 것입니다. 초기에 중앙 서버에 자동 등록을하고 어떤 유형의 연결을 보내도록하겠습니다. 나는이 모든 것을 스스로 지을 수 있었다. AWS가 나를 위해이 모든 것을 할 수있는 도구/서비스를 가지고 있는지 궁금합니다.

+0

[Amazon GameLift] (https://aws.amazon.com/gamelift/)를 살펴볼 수 있습니다. –

+0

불행히도 GameLift는 Java 기반 서버를 지원하지 않습니다. Unity 또는 Unreal을 사용하지 않고 Libgdx와 Kryonet을 함께 사용하려고합니다. – Jambo

답변

0

이제 AWS 문서를 조금 더 읽었습니다. 그것은 아마도 다음과 같이 이것을 달성 할 수있을 것 같습니다 :

두 명이 짝을 지을 때마다 대기열에 추가됩니다. 매치 플레이 서버 중 하나에서 자리가 비어 있으면 대기열에서 벗어납니다. 이 대기열의 크기가 임계 값을 초과하면 EC2의 수를 조정합니다. 이것은 기본적으로 AWS 구성에서 모두 수행 할 수 있습니다. http://docs.aws.amazon.com/autoscaling/latest/userguide/as-using-sqs-queue.html

까다로운 비트는 인스턴스를 축소합니다. 일반적인 REST API와 달리 서버를 끌 수는 없습니다. 서버는 모든 현재 게임을 끝내야합니다. AWS에는 이와 관련된 라이프 사이클 후크가 포함되어 있습니다.