

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

# Container-based 游戏后端架构
<a name="container-based-game-backend-architecture"></a>

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

![使用容器托管游戏后端](https://docs.aws.amazon.com/zh_cn/wellarchitected/latest/games-industry-lens/images/image4.jpeg)

+  玩家使用游戏客户端软件访问游戏，该软件可以通过游戏系统、数字店面或直接从内容交付网络 (CDN)（例如亚马逊）下载给他们。 CloudFrontCDN 在边缘站点提供缓存，以提高用户下载内容的性能。例如， CloudFront 可用于向您的玩家分发游戏客户端软件以及游戏资产和其他内容。
+  AWS Global Accelerator 提供流量加速和可自定义控件，用于将流量从玩家游戏客户端路由到您的负载均衡器，以及为多区域和故障转移目的跨区域路由流量。您的游戏后端 REST API 的自定义域名在 Amazon Route 53 中配置，用于将流量路由到全球加速器终端节点。未显示在图中，AWS Shield Advanced 可以为您的加速器和游戏后端提供额外的 DDoS 缓解措施。
+  NAT 网关和应用程序负载均衡器部署到游戏后端使用的每个可用区域的公有子网中，以提供该区域的高可用性。AWS WAF 部署在应用程序负载均衡器上，以提供第 7 层 Web 流量过滤。
+  游戏后端以基于容器的单个微服务的集合形式托管，这些微服务部署到分布在各可用区的私有子网中的 Amazon EKS 集群中，以提高弹性。自动扩展根据资源利用率动态调整服务和集群节点的容量，资源利用率通常与玩家需求相关。集群 Autoscaler 会自动调整集群中的节点数量，而 Horizontal Pod Autoscaler 会自动扩展部署到集群中的 Pod。
+  游戏和玩家数据存储在后端数据库和缓存中，这些数据库和缓存部署到可用区的私有子网中，并在主节点和副本节点之间进行复制。Amazon Aurora 是玩家资料、授权和游戏内购买等用例的热门选择，这些用例可能有更复杂的查询要求，可能会受益于 MySQL 和 PostgreSQL 的关系数据建模功能。ElastiCache Amazon 可用于构建高性能排行榜、 pub/sub 发送消息，以及缓存经常访问的数据以减少延迟和数据库负载。Amazon DynamoDB 是一个完全托管的 NoSQL 数据存储，非常适合不可预测的访问模式，并且能够扩展到几乎无限的吞吐量，适用于玩家和游戏状态数据、会话数据、库存和物品存储等用例，或者您希望以最小的开销建立全球数据库的用例。
+  应使用异步处理工作流程来执行可以在后台完成的工作，例如更新排行榜或发送好友请求。配置您的游戏后端，将此类工作推送到 Amazon SQS 队列中，以便随着游戏的发展而扩展，或者考虑使用 Amazon SNS 主题在多个消费者应用程序队列之间分配工作以进行并行处理。使用 AWS Lambda 函数****以事件驱动的方式执行处理，以降低计算基础设施成本和管理开销。对于长期存在或需要通过多个步骤进行任务协调的工作流程，可以考虑使用来协调整个工作流程。AWS Step Functions Amazon EventBridge 可用于启动函数以响应 AWS 服务和自定义应用程序事件。