37Games 游戏平台在 AWS 上的高可用容灾实践

37Games 游戏平台在 AWS 上的高可用容灾实践

💡 原文中文,约5000字,阅读约需12分钟。
📝

内容提要

37Games是一家成立于2011年的全球前20大游戏公司。本文讨论了37Games游戏平台在AWS上的部署以及跨区域主动-主动架构的实施。文章解释了游戏平台服务的架构设计以及在可用性方面面临的挑战。还介绍了多区域主动-主动架构,确保高可用性和灾难恢复。文章讨论了架构的访问层、应用层和数据层,以及流量分发和数据同步方法。强调了使用AWS服务如Route53、CloudFront、Aurora Global Database和DynamoDB Global Tables的优点。文章最后强调了通过这种架构实现的改进的可用性、容错性和灾难恢复能力。

🔎

延伸解读

双活架构的流量入口设计

37Games 在 Access Tier 使用 Route53 和 CloudFront 组合实现玩家就近接入和流量分配。通过将域名 CNAME 到 CloudFront,并在 Route53 中配置灵活的路由策略,可以将流量按权重、延迟等分配到不同 Region。这种设计不仅提升了玩家网络质量,还通过 CloudFront 卸载 SSL 认证,减轻源站压力。如果只需故障转移,可简化在 CloudFront 配置 Origin Failover。

跨 Region 数据同步的关键选择

Data Tier 依赖 Aurora Global Database 和 DynamoDB Global Tables 实现关系型和非关系型数据的跨 Region 同步。Aurora 的 write forwarding 允许 secondary Region 本地写入,但需注意一致性参数:EVENTUAL 延迟短,SESSION 延迟最低但耗资源,GLOBAL 保护最强但延迟最大。DynamoDB 采用 last-writer-wins 策略解决冲突,可通过为 item key 添加 Region 前缀/后缀避

容灾切换的实践与验证

容灾策略必须经过测试才有效。37Games 的架构支持容灾演练:Data Tier 中 Aurora Global Database 的 failover 会将 secondary cluster 提升为 primary,并持续监控原 primary,恢复时通过 snapshot 还原,耗时从几分钟到几小时,取决于数据量和距离;DynamoDB Global Tables 无需操作。Access Tier 则根据故障 Region 调整流量入口。这确保了故障时能有效切换。

❓

Q&A

37Games的游戏平台在AWS上采用了什么样的架构设计?

37Games的游戏平台在AWS上采用了Multi Region双活架构,确保高可用性和灾难恢复。

Multi Region双活架构的主要优势是什么?

Multi Region双活架构提供了更高的韧性和灾难恢复能力,能够在一个Region发生故障时,另一个Region继续承载流量。

在37Games的架构中,如何实现数据同步?

数据同步依赖于Aurora Global Database和DynamoDB Global Tables,确保关系型和非关系型数据在多个Region间一致。

37Games如何处理流量分配?

流量分配通过Route53和CloudFront实现,确保玩家流量就近接入并根据策略分配到不同的Region。

Aurora Global Database的failover过程是怎样的?

当primary region发生故障时,Aurora Global Database会提升一个secondary cluster为primary,并监控故障region的恢复。

37Games在AWS上实施的架构有哪些关键AWS服务?

关键AWS服务包括Route53、CloudFront、Aurora Global Database和DynamoDB Global Tables。

🏷️

标签

➡️

继续阅读