本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GAMEREL01-BP01 在多个可用区和区域之间分配游戏基础架构,以提高弹性
为了最大限度地减少本地化基础设施损坏对玩家的影响,您应该将基础设施部署统一分配到足够的独立地点,以便能够承受意外损伤,同时仍有足够的容量来满足玩家的需求。
在未建立这种最佳实践的情况下暴露的风险等级:高
实施指导
部署游戏基础设施时,建议将容量统一分配到一个区域的多个可用区,这样您就可以在不中断玩家体验的情况下承受一个或多个可用区的中断。游戏后端服务(例如 Web 应用程序)应在多个可用区之间进行负载平衡,或者应使用托管服务(例如 AWS Lambda 通过设计提供区域高可用性的 Amazon API Gateway)构建。同样,缓存、数据库、消息队列和存储解决方案等维护状态的组件应设计为跨多个可用区域提供持久的数据持久性,这种持久性由 Amazon S3、DynamoDB 和 Amazon SQS 等服务中的设计提供,可以在其他服务中进行配置。
在设计游戏服务器托管架构以实现弹性时,请将游戏服务器队列统一部署在内的可用区域中, AWS 区域 以最大限度地访问该地区的可用计算容量,并缩小可用区损伤的影响范围。例如,您可以将 Amazon EC2 Auto Scaling 配置为使用可用区域。如果 EC2 实例运行状况不佳,EC2 Auto Scaling 可以替换该实例,并在一个或多个可用区不可用时将实例启动到其他可用区。
对于身份验证等关键基础设施,应配置在多个可用区中运行的最小数量的可行实例,如果其中一个可用区域出现损坏,则使用自动扩展来应对负载增加或容错能力。
将游戏基础设施部署到多个区域,以最大限度地提高可用性。 Cross-Regional Aurora 全球数据库和冗余基础设施等灾难恢复功能可以在主区域受损时提供服务连续性,这些功能可以通过简单的 DNS 更改部署到辅助区域来激活。虽然我们鼓励这样做可以让您的游戏后端服务实现高可用性,但此建议对您的游戏服务器尤其重要。
例如,在多人游戏中,游戏服务器的基础设施容量可能会超过其他服务的容量需求,因为游戏服务器用于为玩家托管游戏会话。许多游戏选择将玩家分成逻辑游戏区域(例如美国西部和东部)。为了简化玩家体验并便于使用全球基础设施托管游戏,可以考虑将面向玩家的游戏区域的名称与实际托管游戏服务器的底层云提供商区域或数据中心位置以及其他基础设施(例如本地区域或您自己的数据中心)分开,这些基础设施托管支持该玩家游戏区域的游戏服务器实例。
在设计配对服务时,部署多区域架构,跨区域单独部署软件。将您的配对服务部署与托管游戏服务器实例的舰队分离,这样无论配对服务的哪个区域部署处理了配对请求,您都可以将玩家路由到区域中的游戏服务器。
在配对实施中设计逻辑,优先考虑符合延迟和其他规则的游戏服务器区域,如果你的舰队容量不足或其他区域基础设施中断,你可以回退到将玩家路由到其他区域。
实施步骤
-
在多个可用区中统一分配游戏基础架构,以提供高可用性和弹性。
-
使用托管 AWS Lambda、Amazon S3、DynamoDB 和 SQS 等方式部署游戏后端服务和有状态组件,或者为自定义解决方案配置负载平衡和耐久性。
-
使用 Aurora 全球数据库和面向玩家的逻辑区域(与底层物理位置分离)等灾难恢复解决方案,为关键游戏服务和服务器实施多区域部署。