如何在AWS上扩展专用EC2实例?

时间:2017-03-02 20:56:00

标签: java amazon-web-services amazon-ec2 elastic-beanstalk multiplayer

我正在使用Kryonet(Java TCP / UDP网络库)创建在线实时多人移动游戏,我计划在AWS上托管。

体系结构如下:客户端连接到中央登录/帐户服务器,允许他们登录并查看他们的统计信息等。这一点很简单,因为它基本上只是一个REST API,可以是以非常标准的方式缩放(就像你使用任何webapp一样)。

然而,更有趣的是当球员真正打比赛时。为此,我计划建立一个单独的#34;匹配"服务器(EC2)。登录/帐户服务器将配对两个播放器,然后向客户端发送特定匹配服务器的地址。然后玩家将加入该匹配服务器,该服务器将举办他们的比赛(可能持续5-10分钟)。匹配服务器需要是粘性的,因为它将运行游戏的实时实例,并且将实时发送/接收UDP数据包。每个比赛服务器可能会举办几百场比赛。

我的问题是如何扩展这些匹配服务器。我想我会让他们在启动时自动注册中央服务器,并发送一些类型的保持活动。我可以自己建造这个;但是,我想知道AWS是否有可以为我完成所有工作/服务的工具/服务。

1 个答案:

答案 0 :(得分:0)

好的,我已经完成了对AWS文档的更多阅读。似乎我可以实现如下:

每次有两个玩家配对时,它们会被添加到队列中。当其中一个匹配播放服务器上的某个位置空闲时,它们将从队列中取出。当此队列的大小超过某个阈值时,则缩放EC2的数量。这可以基本上在AWS配置中完成:http://docs.aws.amazon.com/autoscaling/latest/userguide/as-using-sqs-queue.html

然后,棘手的比特缩小实例。与普通的REST API不同,您无法关闭服务器。服务器需要完成当前所有游戏。似乎AWS也有生命周期钩子。