《燃烧的远征》前夕补丁上线前需停机维护24小时的原因
揭秘《燃烧的远征》前夕24小时停机维护原因:暴雪首次合并经典怀旧服与TBC数据库,确保角色数据无缝迁移,点击了解幕后技术细节!
作为经典怀旧服周年纪念版服务器向《燃烧的远征》(The Burning Crusade)前夕版本过渡的一部分,暴雪最近宣布了一项长达 24 小时的维护计划,定于太平洋标准时间 1 月 12 日(周一)下午 3:00 开始。为了帮助玩家理解为何此次服务器维护耗时如此之长,《魔兽世界》资深游戏制作人 Tom Ellis 在论坛发表了一篇长帖,提供了一些解答。
暴雪正致力于怀旧服的未来
虽然这对某些人来说可能显得平淡无奇,但这实际上是暴雪首次将两个不同版本的《魔兽世界》(经典怀旧服 60 级版本与 TBC)合并到同一个数据库中。这是否会成为暴雪将其他数据库服务器(如“探索赛季”或“熊猫人之谜”怀旧服)也合并到正式服版本的第一步?
各位好,
我想借此机会和大家分享一下,即将到来的《燃烧的远征》周年纪念版 24 小时维护窗口背后的一些“原因”,因为对我们来说,如此长时间的停机是非常罕见的。
警告!这篇文章完全不包含任何实用信息!我是认真的!这只是为那些喜欢此类幕后故事的人提供的可能有趣的见解。
当怀旧服团队就启动这个名为“周年纪念版”的新项目与服务器及在线运营团队接洽时,我们面临着一个非常巨大的挑战:魔兽世界回归中国。让中国服务器重新上线并运行是我们自……也许是自始以来面临的最大基础设施挑战。怀旧服的发布规模更大,但在中国从零开始呈现了大量独特的挑战。为了满足怀旧服团队的需求,我们必须发挥创意:我们没有像往常那样为这种项目建立一个全新的《魔兽世界》运行环境,而是将周年纪念版作为在我们现有的经典怀旧服环境中运行的一些新服务器,并辅以少量代码来防止周年纪念版与经典怀旧服版本冲突。这层薄薄的隔墙曾被突破过几次,最显著的例子大家可能还记得,当时一些“探索赛季”的玩家设法潜入了周年纪念版的奥特兰克山谷,坦白说,这产生了一些相当滑稽的结果。探索赛季角色与 60 级版本角色之间确实存在着微小的战力差距……无论如何,这种方案非常理想,它让我们在那个非常忙碌的时期,以对大家日程影响最小的方式推出了周年纪念版。
当我们这样做时,我们就知道自己是在“把问题留给未来”。经典怀旧服版本将永远是经典怀旧服,但我们的新周年纪念版服务器最终会向《燃烧的远征》进化。你无法在同一个环境中运行两个不同版本的《魔兽世界》,我们必须采取行动,在未来的某个时间点将这些服务器移至它们自己的环境中,以便它们能向《燃烧的远征》推进。
这就把我们带到了现在,我们终于追上了那个“被踢走的罐子”,到了该还债的时候了。当我们研究可用选项时,发现自己再次处于紧要关头:我们当时正忙于发布我们有史以来制作的最大的以数据库为中心的功能之一——“玩家房屋”,而且工作范围超出了预期(周年纪念版非常受欢迎)。其中一个最可能的选项——“连接服务器”式的迁移被否决了,因为我们发现驱动该过程的代码和脚本已经非常陈旧,重新启用它们所需的测试轮次超出了我们的时间预算。
另一个选项是,我们可以直接执行数百万次角色转移,将所有人复制到新环境中的新服务器上。但这对玩家并不友好,因为公会会被解散,且重名冲突会非常严重。一支精锐的工程师团队聚在一起集思广益,寻找对玩家影响最小、同时在有限时间内可行的解决方案。好消息是,他们找到了一个对你们来说应该是完全透明的方案:当你登录《燃烧的远征》前夕版本时,你的角色、邮件、公会,一切都将与你在经典怀旧服最后一天离开时完全一样。
我们实现这一目标的方式非常跳跃,我们称之为“原位持久化(persistent in place)”,这可能对大多数人来说没什么意义,但反正我们现在处于全盘分享模式。魔兽世界的数据存在于三个数据库中:持久化数据库(你的角色、公会、道具等)、账号数据库(账号层面的内容,如成就)以及区域数据库(处理全区事务,如时光徽章、服务器列表上的角色数量)。周二,我们将把所有的账号和区域数据复制到新环境的数据库中,这将占据大部分停机时间。至于你的持久化数据,那是我们打破一些长期以来建立的《魔兽世界》基础设施规则的地方。
新环境中的这些“新”服务器将使用旧的持久化数据,即仍然在为经典怀旧服服务的旧数据库。这是全新的尝试,我们以前从未做过类似的事情。当数据库工程师提出这个计划时,最初的反应是:“等等,这真的行得通吗?”但测试证明,是的,确实行得通!对于任何有数据库思维的人来说,我们指的是两个不同版本的《魔兽世界》同时在同一个数据库上进行读写,而通常每个环境都会有自己的数据库。值得庆幸的是,我们所有玩家的数据都标记了其所属的相应环境,因此我们的所有查询都能顺畅运行。我们只需要更新几处内容,让它们意识到只查找特定环境的数据,而不是假设它们连接的数据库只包含它们关心的内容。太棒了!
这一切对你意味着什么?最终,什么都不会改变。周二服务器开启时,你会看到旧的服务器,名字没变,你会找到同样的角色,一切照旧。因此,提前感谢大家在这次特殊的停机事件中的耐心配合,这是针对周年纪念版怀旧服的一次性迁移,以后无需重复。
希望你能从这篇长篇大论中读到一些价值,我们周二见!
/Fwoibles




