0

我正在使用Kryonet(Java TCP/UDP網絡庫)在線實時多人在線遊戲創建,我打算在AWS上託管。如何在AWS上擴展專用的EC2實例?

該架構如下:客戶端連接到一箇中央登錄/帳戶服務器,允許他們登錄和查看他們的統計等。這一點很容易,因爲它基本上只是一個REST API,可以縮放以一種非常標準的方式(就像任何Web應用程序一樣)。

然而,更有趣的一點是,當玩家實際上打比賽時。爲此,我打算有一個單獨的「匹配」服務器(EC2)池。登錄/帳戶服務器將配對兩個玩家,然後向客戶端發送特定匹配服務器的地址。然後球員將加入那場比賽服務器,這將服務於他們的比賽(可能持續5-10分鐘)。匹配服務器需要粘性,因爲它將運行實時遊戲實例,並且將實時發送/接收UDP數據包。每個匹配服務器可能能夠舉辦幾百場比賽。

我的問題是關於如何去擴展這些匹配服務器。我想我會讓他們在啓動時自動註冊中央服務器,併發送一些類型的活着。我可以自己建立這一切;不過,我想知道AWS是否有能夠爲我完成這些工作的工具/服務。

+0

你可能想看看[Amazon GameLift](https://aws.amazon.com/gamelift/)。 –

+0

不幸的是,GameLift似乎不支持基於Java的服務器。 我不打算使用Unity或Unreal,而是使用Libgdx和Kryo​​net的組合。 – Jambo

回答

0

好的,我已經做了更多的AWS文檔閱讀。看起來我可能達到這個如下:

每次兩名球員配對,他們被添加到一個隊列。當其中一個匹配播放服務器上的某個位置空閒時,它們將從隊列中排除。當此隊列的大小超過某個閾值時,將縮放EC2的數量。這可以通過基本上所有的AWS配置完成:http://docs.aws.amazon.com/autoscaling/latest/userguide/as-using-sqs-queue.html

棘手的一點是縮小實例。與普通的REST API不同,您不能關閉服務器。服務器需要完成當前的所有遊戲。看起來AWS也有覆蓋生命週期的鉤子。