View a markdown version of this page

基于容器的游戏后端架构 - 游戏行业视角

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

基于容器的游戏后端架构

本节概述了基于容器的游戏后端架构。

使用容器托管游戏后端

使用容器托管游戏后端

  • 玩家使用游戏客户端软件访问游戏,该软件可以通过游戏系统、数字店面或直接从内容交付网络 (CDN)(例如亚马逊)下载分发给他们。 CloudFront CDNs在边缘位置提供缓存,以提高用户下载内容的性能。例如, CloudFront 可用于向玩家分发游戏客户端软件以及游戏资产和其他内容。

  • AWS Global Accelerator 提供流量加速和可自定义的控件,用于将流量从玩家游戏客户端路由到您的负载均衡器,以及出于多区域和故障转移目的跨区域路由流量。在 Amazon Route 53 中配置了游戏后端 REST APIs 的自定义域名,以将流量路由到全球加速器终端节点。图中未显示,AWS Shield Advanced 可以为您的加速器和游戏后端提供额外的 DDo S 缓解措施。

  • NAT Gateway 和 Application Load Balancer 部署到游戏后端使用的每个可用区的公有子网,以提供该区域的高可用性。AWS WAF 部署在 Application Load Balancer 上,用于提供第 7 层 Web 流量过滤。

  • 游戏后端作为一组基于容器的单个微服务托管,这些微服务部署到分布在各个可用区的私有子网中的 Amazon EKS 集群中,以实现弹性。自动扩展会根据资源利用率动态调整服务和群集节点的容量,资源利用率通常与玩家需求相关。集群自动扩缩器会自动调整集群中的节点数量,而水平容器自动扩缩器会自动扩展部署到集群中的 Pod。

  • 游戏和玩家数据存储在后端数据库和缓存中,这些数据库和缓存部署到跨可用区的私有子网中,并在主节点和副本节点之间进行复制。Amazon Aurora 是玩家资料、权利和游戏内购买等用例的热门选择,这些用例的查询要求可能更加复杂,并且可以从 MySQL 和 PostgreSQL 的关系数据建模功能中受益。Amazon ElastiCache 对于构建高性能排行榜、 pub/sub 消息传送以及缓存经常访问的数据以减少延迟和数据库负载非常有用。 Amazon DynamoDB 是一种完全托管的 NoSQL 数据存储,非常适合不可预测的访问模式,并且能够扩展到几乎无限的吞吐量,适用于玩家和游戏状态数据、会话数据、库存和物品存储等用例,或者您想要以最小的开销建立全球数据库的用例。

  • 应使用异步处理工作流程来执行可在后台完成的工作,例如更新排行榜或发送好友请求。配置您的游戏后端以将此类工作推送到 Amazon SQS 队列中,以便随着游戏的增长进行扩展,或者考虑使用 Amazon SNS 主题在多个使用者应用程序队列之间分配工作以进行并行处理。使用 AWS Lambda 函数以事件驱动的方式执行处理,以降低计算基础设施成本和管理开销。对于持续时间较长或需要通过多个步骤进行任务协调的工作流程,可以考虑使用来协调整个工作流程。AWS Step Functions Amazon EventBridge 可用于启动响应 AWS 服务和自定义应用程序事件的函数。