谷歌工程师:上线第一天,《Pokémon GO》的服务器崩溃是不可避免的

卢克·斯通目睹过无数项目从零发展到鼎盛,但却从未见过《Pokémon GO》这样的案例。

编辑周思冲2016年09月30日 15时04分

近日,谷歌工程师卢克·斯通(Luke Stone)撰文描述了《Pokémon GO》惊心动魄的上线第一天。他负责过无数大项目的上线与维护,却从未遇见过《Pokémon GO》这样的案例。

原文极其专业,“惊心动魄”也是通过各种术语表达出来的。文中最直观的恐怕是下面的这张图表。

预期和实际数据间的惊人差距
预期和实际数据间的惊人差距

最下方是Niantic预估的数据(橙线)。《Pokémon GO》的服务器架构在谷歌云上,而谷歌的工程师在评估了《Pokémon GO》之后,谨慎地设计了紧急状况的应对方案,并设定了可能出现的最糟糕负载情况(红线)。然后就是无情的事实——绿线。卢克在事后评估中发现,《Pokémon GO》的上线首日服务器负载超过了Niantic预期的五十倍,超过了最坏预期的十倍以上。

当然,这终究是一个“敌屌我赢”的故事。

根据卢克的描述,谷歌同Niantic间达成了某种默契(毕竟曾经是一家人):谷歌云团队在《Pokémon GO》项目上采用了全新的沟通方式,“客户可靠性工程”(Customer Reliability Engineering,简称CRE)。卢克没有透露CRE的具体情况,总之谷歌在CRE框架下抽调了一批工程师同Niantic的人员组建了共同团队,并力挽狂澜。

实际上,《Pokémon GO》是CRE的第一个客户项目。而《Pokémon GO》的巨大成功已经使谷歌云团队决定把CRE推而广之。

文中还提到了关键的一点:经过成长期之后,《Pokémon GO》比项目初期面临的挑战还要严峻得多。为什么今天的《Pokémon GO》能支撑海量同时在线并保证低延迟?其中的重要原因之一是“谷歌全球网络”(Google’s global network)。《Pokémon GO》绝大多数的数据通信都在上面完成,它实际上是谷歌的“私有光纤网络”(private fiber network)。

谷歌全球网络的一部分,谷歌全球缓存(Google Global Cache, or GGC)的分布示意图
谷歌全球网络的一部分,谷歌全球缓存(Google Global Cache, or GGC)的分布示意图

卢克说:“澳大利亚和新西兰的测试已经很夸张,北美上线让我们如临大敌,日本开服当天的同时在线人数却又超过了北美上线当天的三倍。《Pokémon GO》项目就是面临各种挑战,不断升级的过程。”

卢克有机会面临更大的挑战吗?

0

编辑 周思冲

zhousichong@chuapp.com

“我和我最后的倔强,握住头像绝对不放”——清水健。

查看更多周思冲的文章
关闭窗口