文档章节

Kubernetes 落地案例|将 Pokémon Go 运行到谷歌云上

Caicloud
 Caicloud
发布于 2016/10/27 11:25
字数 1359
阅读 20
收藏 0

背景知识:

《Pokémon Go》是由任天堂、Pokémon 公司和谷歌 Niantic Labs 公司联合制作开发的现实增强(AR)宠物养成对战类 RPG 手游。——百度百科

这些年的工程师生涯中,我参与过很多产品的发布,这些产品一般都是慢慢地拥有了上百万的用户。通常,产品在发布几个月后,产品新功能发布和架构都进行了调整,用户量才会渐渐上升。但是在谷歌云客户 Niantic 发布 Pokémon Go 时,一切好像都没有按照常理出牌,从中我体验到前所未有的成长。

在技术社区,同行曾经询问过支撑起 Pokémon Go 如此庞大用户量的系统采用了什么基础设施。希望将 Pokémon Go 运行起来。所以,Niantic 和  Google 的团队将支撑起 Pokémon Go(目前世界上最流行手游之一)系统的关键组件总结到了这篇文章中。

 

共同的命运

在今天的 Horizon 活动中,我们会介绍谷歌 CRE 给大家,这是一种新的参与模式,Google 技术团队与用户团队一起参与,共同构建可靠而成功的关键云应用。Google CRE 第一个客户就是 Niantic,严格意义上来说,Pokémon Go 的发布算是首次测试。

发布到澳大利亚不到 15 分钟,玩家流量超乎预期。Pokémon Go 是 Niantic 严格意义上来说的第一款产品,对他们有着特殊的意义。第二天预计将发布版本到美国,在这之前,Niantic 已经提前跟 Google CRE 寻求好了支援。Niantic 和谷歌云——包括 CRE,SRE,开发,产品,支持以及执行团队——一起撑起一大批新的 Pokémon 玩家,疏通玩家过多可能带来的流量堵塞。

 

创建 Pokémon 游戏世界

Pokémon Go 是一款移动应用程序,它使用了很多谷歌云上的服务,然而云数据库直接反映了受欢迎程度,这篇博客开篇的图表告诉我们:团队预计玩家流量会增加一倍,最坏情况下是增加 5 倍;然而事实情况下玩家流量增加到了 50 倍......

发布的时候,也不是每个细节都运行顺畅的。问题聚集在游戏的稳定性上的时候,Niantic 和谷歌工程师按照顺序逐个解决问题,快速创建和部署解决方案。谷歌 CRE 和 Niantic 携手合作,审查架构的各个部分,利用核心谷歌工程师和产品经理的专业知识——所有这些都是在数百万游戏玩家涌入的背景下进行的。

 

Pokémon 的运行基于容器

Pokémon Go 除了风靡全球,也是目前大环境下使用容器进行开发的情况中最令人兴奋的例子之一。游戏的应用程序逻辑运行在谷歌 GKE 上面,由开源项目 Kubernetes 驱动。Niantic 选择了 GKE,因为它有能力来协调他们超大规模的集群容器,解放团队,使团队能够专注于为他们的玩家实时部署更改。用这个方法,Niantic 使用谷歌云将 Pokémon Go 转化为数百万玩家的服务,并不断适应和改进。

Niantic 和 Google CRE 团队完成的一个更加大胆的技术功能就是,将谷歌 GKE 升级到允许添加 1000 多个节点到其容器集群的新版 GKE,预期在日本发布。就好比更换飞机的发动机一样,更新技术功能每个步骤都需要仔细小心,在数百万新玩家登陆并且加入了 Pokémon Go 的游戏的情况下进行新版本切换,以防止打扰现有的游戏玩家秩序。

在更新的基础上,Niantic 和谷歌工程师一起合作替换网络负载均衡器,在其位置部署新版本的,更加成熟的 HTTP/S 负载均衡器。HTTP/S 负载均衡器是为 HTTPS 流量定制的全球系统,控制更多,连接用户更快,总吞吐量更高——更好地匹配 Pokémon Go 的数量和类型。

在美国发布的版本中吸取到经验而作出的以下修改:总体容量规划,容器引擎最新升级的架构,HTTP/S 负载均衡器的升级;这三个修改在发布日本版本的时候收效显著——日版发布的时候,玩家人数达到了美版的三倍。

Facts

Pokemon Go 游戏使用了 Google 云上十几个服务。

Pokemon Go 是谷歌 GKE 上面 Kubernetes 部署规模最大的项目。鉴于集群和伴随着的吞吐量,许多 bug 在这个过程中被识别并修复,之后被合并到开源项目之中。

要支持 Pokemon Go 庞大的用户量,Google 为 Niantic 的容器引擎集群规划了很多要点核心。

Google 的全球网络帮助减少了整体延迟现象。

在这里,我代表 Google CRE 团队,觉得作为 Pokemon Go 这样一个有意义的项目中的一员,实在是难得,能够为这么大范围内的人真觉得荣幸之至。

原文链接:

https://cloudplatform.googleblog.com/2016/09/bringing-Pokemon-GO-to-life-on-Google-Cloud.html

转载联系我们 -3-

© 著作权归作者所有

Caicloud
粉丝 18
博文 77
码字总数 153394
作品 0
杭州
程序员
私信 提问
“一夜成名”需要多久?他花了20年!

  一款曾经作为愚人节玩笑诞生的app,现如今已成为全世界现象级的产品。玩家们拿着手机,走出房间,来到大街上,争先捕获和训Pokémon,与各种Pokémon战斗。   Pokémon Go在美国、澳大...

程序员客栈
2016/07/16
9
0
广电总局:风险太大,暂不受理审批《Pokémon Go》类型游戏

想要在国内玩AR游戏《Pokémon Go》,还是洗洗睡吧! 2016年火爆到不行的AR游戏《Pokémon Go》对于国内用户来说,一直处于可望而不可即的状态。坏消息是2017年我们依然和这款游戏无缘。最近...

行者武松
2018/03/13
0
0
用无人机抓“小精灵”?这绝对是“开挂”的节奏

作为一款引爆全球的游戏,《Pokémon Go》或许又要放大招了! 自AR游戏《Pokémon Go》推出以来,瞬间在全球引起了新的一阵“神奇宝贝”热。而现在,一家公司趁着这股热潮,为《Pokémon Go》...

行者武松
2018/03/05
0
0
几款 Pokémon Go 开源项目介绍

Pokémon Go是由Niantic Labs和任天堂共同发布的增强现实(AR)游戏,一经推出,火遍全球,收获众多玩家。想必很多只猿,也沉浸其中。在这里,介绍几款 Pokémon Go开源项目,感兴趣的猿,可...

催呀催呀
2016/07/28
5.8K
14
路怎么不见了!Pokémon GO 全面采用 OpenStreetMap 图资

【Technews科技新报】对于今天开启《Pokémon GO》抓宝或是打怪的人来说,可能觉得看到的地图有点不一样,甚至比乡下地图还缺了不少道路。网友指出 Niantic 不只拿 OpenStreetMap 来算不同栖...

陈 瑞霖
2017/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
14
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部