内容提要
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。