Minecraft《我的世界》带着1.3亿居民迁徙了!
Minecraft Realms
的 Azure 迁移之旅
Minecraft 《我的世界》这款游戏相信大家都不陌生。作为一款以建造为主题的沙盒类游戏,玩家可以用大量不同外观和功能的“方块”作为素材搭建奇妙有趣的世界,甚至在此基础上通过生存、创造、冒险、极限、旁观等模式体验更多乐趣。
Minecraft Realms 在云中托管了数以万计的多玩家服务器。这些服务器会在用户连接至自己的 Realm 时动态分配。特定时间内,每个 Realm 都运行在一台虚拟服务器中,这些服务器会随着需求的增加和减少而分配和回收。
在第1阶段,需要将 Realm 从 AWS 迁移至 Azure PlayFab 多玩家托管服务中。Azure PlayFab 提供了在大规模环境中构建和运维在线游戏所需的支持 。尤其是,这是一种针对游戏量身定制的服务,可提供全球低延迟多玩家托管服务和远程内容管理功能(用于更新游戏资源、管理在线支付,以及实现 LiveOps),借此可将游戏作为一种服务来运行,并针对游戏性能进行实时分析。当成功迁移至 PlayFab Multiplayer Servers 后,Realms 团队几乎不需要 关注虚拟机的管理工作,可以将更多时间用于改善自己产品为玩家提供的游玩体验。
此时整个后台的多玩家服务器部分已经运行在 Azure 中,而其余存储和数据库等系统还在 AWS。
▲大致架构如图所示
随后,Mojang 按照规划将数据库、存储以及计算设备从 AWS 顺利迁移到 Azure。
数据库
Minecraft Realms 服务涉及大量关键业务数据,包括游戏世界状态信息、订阅元数据以及遥测数据。这方面共涉及三个预生产环境和两个生产环境,每个环境中包含最多3个数据库,而此次迁移需要将分布在13个数据库中,总量1TB的数据(最大的数据库包含450GB数据),以可靠的方式从AWS 移至 Azure Database for MySQL。由于迁移期间会产生每秒约6千个服务请求(RPS),因此这个涉及关键业务的操作变得更加复杂。
Azure 提供的一系列实用工具(如 Azure Database Migration Service(DMS),以及来自 Azure FastTrack 团队的专家支持)对成功迁移至关重要。Mojang 还使用了 Azure Database Migration Service 工具,它可以简化将数据、Schema 和对象从源位置迁移至 Azure 的过程。Azure FastTrack 团队则为 Mojang 量身定制了指南,进一步加速、简化并优化了 Azure 部署。
数据库的迁移复制持续了约一周。初始数据载入过程中,最大的一个数据库表(超过10亿行!)也只用了2天时间。尽管服务需要处理6k的 RPS,但所有复制延迟均未超过几秒钟。在这一过程中,每周 Mojang 会从 AWS 将一个新环境迁移至 Azure MySQL,为此会安排一个较小的停机时段(大部分环境约20分钟),在这期间顺利完成 Azure DMS 迁移。部署完毕后环境重新上线后,数据库就成功托管在 Azure了!
▲所有数据库成功迁移后,后端系统的大致架构如下图所示
存储
Minecraft Realms 丰富的游戏玩法,其精髓在于构建精美的虚拟世界,玩家可以聚集在私密的空间中一起游戏。Realms 已经保存了约20PB以上的虚拟世界游戏数据。
Mojang 计划在尽可能避免对游玩过程产生影响的前提下将所有世界数据迁移至 Azure Blob 存储。这一过程会导致游玩遭遇停机,因为在移动数据的过程中,玩家将无法访问自己的 Realm。为避免停机,Mojang 采用了这样的策略:当现有的活跃 Realm 世界被首次访问时,从 AWS 读取现有的世界数据,随后将所有更新写入至 Azure Blob 存储。以后再访问这些数据时,将只通过 Azure Blob 来访问。
因此所有活跃的Realms 都会在运行的过程中完成迁移。玩家只有在通过Azure 首次启动自己的 Realm 时会体验到难以察觉的(毫秒级)延迟。最终,只需要将剩下的不活跃世界数据(指最近一年内均未被激活过的数据,约300TB)进行批量复制即可。
▲存储迁移的大致过程
计算
总结
推荐阅读
精彩活动
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/