customer_landing_page_graphics166x_pokemon_co

宝可梦公司迁移至 AWS 专门构建的数据库

2020 年

宝可梦于 1996 年在日本推出,现已成为全球最受欢迎的娱乐品牌之一。数亿计不同年龄阶层的用户喜欢通过宝可梦集换式卡牌游戏和精灵宝可梦手机游戏来训练宝可梦生物并与其作战。

在华盛顿州贝尔维尤,宝可梦国际公司 (TPCi) 负责确保亚洲以外的宝可梦粉丝可以通过功能齐全的用户账户跟踪其成就。该解决方案也称为宝可梦训练家俱乐部,它不仅必须在“训练家”想要登录的任何时候提供无缝体验,而且还必须遵守儿童在线隐私保护法和数据保护通用条例。

“我们的用户档案系统主要包括两组数据:精灵宝可梦游戏用户和宝可梦集换式卡牌游戏用户”,TPCi 开发经理 Jeff Webb 说。“不同游戏类型的用户档案需要不同的处理和维护,但它们都保留在宝可梦训练家俱乐部系统中。由于我们要处理的数据非常复杂和庞大,因此,数据库可扩展性和可靠性对于提供出色的用户体验至关重要。”

自 2016 年推出精灵宝可梦之后,需要访问此系统的用户数量在两年内增加到超过 3 亿。该公司决定迁移至完全托管的解决方案,以腾出时间和资源来专注于执行战略方案。

开始 python 教程
CustomerReferences_QuoteMark

使用 Amazon Aurora,我们将 300 个节点合并为 30 个,并且我们不再需要为数据库许可证付费。我们的月度数据库成本降低了数万美金。”

Jeff Webb
宝可梦国际公司开发经理

数据库之战

起初,宝可梦训练家俱乐部是由第三方 NoSQL 文档数据库提供支持,其中包括所有用户档案数据和 3 亿多精灵宝可梦用户的更新日志。数据库分片中包含宝可梦生物的主数据库、集换式卡牌游戏在线用户数据以及来自现场“团体游戏”小组的数据。Memcached 提供对用户会话数据的快速访问。该公司将其数据库和内存缓存系统托管在 Amazon Elastic Compute Cloud (Amazon EC2) 上,使用 Elastic Load Balancing 管理流量并使用 Amazon Simple Storage Service (Amazon S3) 进行对象存储。“我们之所以选择先前的 NoSQL 数据库是因为其快速查找能力”,Webb 指出。“但是,我们发现要实现我们期望的速度需要维护许多索引和管理许多复杂的节点,一次超过 300 个。”

保持节点顺畅运行具有一定的挑战性。当索引或数据库节点不可用时,就会增加延迟。如果 Memcached 节点故障,那么用户完全无法登录。当主数据节点故障时,团队必须停下一切来进行重构,此时系统在备份节点上运行。经过数年的日常管理问题之后,由于精灵宝可梦用户的大量增加,TPCi 决定迁移至 Amazon Web Services (AWS),以使用其完全托管的数据库服务。

“我们对 Amazon EC2、Elastic Load Balancing 和 Amazon S3 的性能和可靠性非常满意”,Webb 回忆说。“这就是我们决定调差 AWS 托管数据库服务的原因。” 团队进行了广泛的测试,以找到满足其安全性、扩展性、性能和弹性需求的解决方案,最终选择了与 PostgreSQL 兼容的 Amazon Aurora。“由于身份验证请求占据了大部分 TPCi 流量,因此,我们选择了 Amazon Aurora PostgreSQL,以利用其企业级安全功能(包括静态和动态加密)以及多区域环境中的可靠性。”

团队还决定将用户缓存迁移至 Amazon ElastiCache,以充分利用 RedisMemcached。Redis 会将新用户的任务排队,以提示它们完成身份验证后任务,如接受条款和条件。Memcached 有助于保持票证有效,从而使现有用户的会话在新用户加入时不会中断。该团队将全局配置和存活时间 (TTL) 数据迁移至 Amazon DynamoDB,后者是一个键值数据库,可大规模实现个位数的毫秒级性能。它们还将事件数据(如登录历史记录和用户更改审计记录)迁移至 Amazon S3。

降低成本,提高容量并实现零停机

首先迁移的是非关系数据存储,然后再将用户数据和数据库分片迁移至 Amazon Aurora。该项目仅花了九个月时间。“我们前几个月一直在创建用户案例和进行压力测试”,Webb 说。“随后,我们关联了所有数据并解构了 JSON 数据。我们在身份验证过程中零停机的前提下完成了迁移,这对于每秒都有 300 多个来自全球各地的用户登录宝可梦训练家俱乐部来说非常出色。”

迁移之后,TPCi 大幅降低了花在数据库上的时间和费用。“使用 Amazon Aurora,我们将 300 个节点合并为 30 个,并且我们不再需要为数据库许可证付费”,Webb 说。“我们的月度数据库成本降低了数万美金。最重要的是,迁移之前,我们在六个月内会出现 168 小时的停机或者性能下降。迁移之后,这种情况再也没有出现过。”

迁移还带来其他好处。“通过使用 Amazon DynamoDB 中的内置 TTL 设置,我们可以跟踪用户超过最大登录尝试次数阈值和拒绝进入的时间”,Webb 说。“结果就是机器人登录尝试次数减少了 90%,这就为合法用户腾出了系统资源并且减少了过度扩展的需要。”

充分利用完全托管的 Amazon ElastiCache 服务显著降低了管理 Memcached 节点的开销。将用户会话数据和票证状态存储在集群中加快了身份验证流程,并且使用户无需维护至单个服务器的连接。

缩短了管理数据库的时间,从而腾出了更多时间来进行创新。该公司正在计划使用无服务器计算、容器和微服务,以实现更高的效率和性能。随着服务继续改进,TPCi 使得全球数百万用户能够按需在宝可梦世界里畅游。

要了解更多信息,请访问 aws.amazon.com/gametech/databases


关于宝可梦国际公司

宝可梦国际公司是日本宝可梦公司的子公司,管理亚洲以外的资产,负责品牌管理、宝可梦集换式卡牌游戏、家庭娱乐和宝可梦官方网站。

AWS 的优势

  • 将每月成本降低数万美金
  • 将节点数量从 300 个缩减为 30 个
  • 将机器人登录尝试次数减少 90%
  • 无需支付数据库许可证费用
  • 迁移之后实现了零停机或性能下降
  • 每秒可处理多达 300 次登录

使用的 AWS 服务

Amazon Aurora

Amazon Aurora 是一种与 MySQL 和 PostgreSQL 兼容的关系数据库,专为云而打造,既具有传统企业数据库的性能和可用性,又具有开源数据库的简单性和成本效益。

了解更多 »

Amazon ElastiCache

Amazon ElastiCache 可使您在云中无缝设置、运行和扩展常见的开源兼容内存中数据存储。通过从高吞吐量和低延迟的内存数据存储中检索数据,构建数据密集型应用程序或提升现有数据库的性能。Amazon ElastiCache 是缓存、会话存储、游戏、地理空间服务、实时分析和队列等实时使用案例的常见选择。

了解更多 »

Amazon DynamoDB

Amazon DynamoDB 是一个键/值和文档数据库,可以在任何规模的环境中提供个位数的毫秒级性能。它是一个完全托管、多区域多主的持久数据库,具有适用于 Internet 规模的应用程序的内置安全性、备份和恢复和内存缓存。

了解更多 »

Amazon S3

Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。这意味着各种规模和行业的客户,都可以使用 Amazon S3 来存储和保护各种用例(如网站、移动应用程序、备份和还原、存档、企业应用程序、IoT 设备和大数据分析)的数据,容量不受限。

了解更多 »


开始使用

不同行业和规模的组织都在使用 AWS 进行转型,以实现其愿景。联系我们的专家,立即踏上您的 AWS 云之旅。