Performance 可扩展微服务体系结构中的数据通信

Performance 可扩展微服务体系结构中的数据通信,performance,amazon-web-services,architecture,scalability,microservices,Performance,Amazon Web Services,Architecture,Scalability,Microservices,我们正在进行一个项目,以获得有关微服务和自动可伸缩架构的一些知识。在这个项目中,我们正在构建一个小游戏,用户可以驾驶飞机并在线击落其他玩家,托管在Amazon Web服务上。一场比赛的持续时间应该是10分钟左右,100万场比赛(理论上)应该可以同时进行,大约1000名玩家应该可以在一场比赛中进行。因此,应用程序必须是可伸缩的 我们现在在架构中遇到了一个困难的部分。我们希望服务器计算球员的位置。这意味着服务器获取关键输入请求,并使用这些请求重新计算位置。问题是,由于应用程序是可伸缩的,而且不只是一

我们正在进行一个项目,以获得有关微服务和自动可伸缩架构的一些知识。在这个项目中,我们正在构建一个小游戏,用户可以驾驶飞机并在线击落其他玩家,托管在Amazon Web服务上。一场比赛的持续时间应该是10分钟左右,100万场比赛(理论上)应该可以同时进行,大约1000名玩家应该可以在一场比赛中进行。因此,应用程序必须是可伸缩的

我们现在在架构中遇到了一个困难的部分。我们希望服务器计算球员的位置。这意味着服务器获取关键输入请求,并使用这些请求重新计算位置。问题是,由于应用程序是可伸缩的,而且不只是一台服务器进行所有计算并保存所有数据,因此输入事件可能会在不同的位置结束。我们认为,不断地将所有位置写入数据库并将其读回客户机速度太慢,伸缩性也不够。此外,我们不希望为单个游戏使用专用服务器,因为这只会降低计算能力(和金钱)

我们已经通过其他游戏架构(如消息传递)搜索了不同的实现,但没有任何结果,我们找不到任何匹配的方法。我们想知道是否有任何一种模式可以使这种实现工作?我们真正需要的是对一些可能模式的方向感。

试试ElasticCache

这使得在节点之间共享位置变得容易 他们讨论了将其用于分数表,但也可能将其用于位置数据

将ElasticCache与自动缩放相结合,您应该能够按需扩展环境

尝试ElasticCache

这使得在节点之间共享位置变得容易 他们讨论了将其用于分数表,但也可能将其用于位置数据


将ElasticCache与自动缩放相结合,您应该能够按需扩展环境

您的示例听起来像是Apache Kafka等流媒体平台的主要用例。它本身是一个可扩展的集群,充当一个大型事件队列(您的游戏输入),存储并提供给流消费者(您的所有游戏服务器)。这具有非常高的性能,应该能够以低延迟每秒处理数百万个输入

您还应该确保将您的游戏世界划分为更广泛的“区域”,以确保并非所有服务器都始终需要来自所有其他服务器的数据。我敢肯定,在任何时候,没有一个球员的屏幕上有所有其他球员

调查


与传统DBs相比,您的示例听起来像是ApacheKafka等流媒体平台的主要用例。它本身是一个可扩展的集群,充当一个大型事件队列(您的游戏输入),存储并提供给流消费者(您的所有游戏服务器)。这具有非常高的性能,应该能够以低延迟每秒处理数百万个输入

您还应该确保将您的游戏世界划分为更广泛的“区域”,以确保并非所有服务器都始终需要来自所有其他服务器的数据。我敢肯定,在任何时候,没有一个球员的屏幕上有所有其他球员

调查

与传统DBs相比,

通常是回答此类问题的好来源。通常是回答此类问题的好来源。