每秒百万次访问,每天10TB数据,AR游戏《精灵宝可梦Go》的背后


Esther|编辑

据Statista统计数据,截止今年1月,风靡全球的LBS AR游戏《精灵宝可梦Go》仅在iPhone端,日活用户就有大约82.7万人。而在一些活动期间,该作的同时在线人数甚至可达数百万级,自上线以来持续吸引了大批忠实玩家。

与吃鸡等MMORPG游戏不同,《精灵宝可梦Go》不仅需要解决同时多人在线的问题,还需要确保基于线下场景的实时AR内容能在多台设备上同步。考虑到该作在全球的大规模覆盖率,大量的LBS AR数据为游戏背后的技术带来很大挑战。那么,《精灵宝可梦Go》的服务器是如何同时承载数百万用户的呢?

据青亭网了解,《精灵宝可梦Go》基于谷歌云服务,因此数据的处理、传输、渲染等流程在云端平台完成,保证稳定性的同时,也允许LBS AR应用场景足够灵活。

近期,为了了解这款游戏背后的技术,谷歌采访到Niantic高级工程经理James Prompanya,在采访中James为我们详细讲述了游戏后台是如何使用Google Cloud工具来支持大量用户流量,包括管理和维护大规模用户端所采用的系统架构,以及其背后发生的故事等等。

Pormpanya表示:在“社区日”和“精灵宝可梦Go Fest 2021”等活动期间,游戏的流量从40万人/秒上升至近100万人/秒。为了承载不断增加的同时在线玩家,Niantic采用了GKE(谷歌容器引擎)、谷歌全球分布式资料托管服务/资料库Cloud Spanner等技术,而且在线上获得了谷歌工程师的技术支持。

注:GKE是谷歌旗下的一个Kubernetes管理平台,主要在谷歌云平台上运行。而Kubernetes最初由谷歌工程师开发,后来在2014年开源,它是一种容器编排平台,用于调度、自动部署、管理和扩展容器化应用。谷歌Spanner是一个分布式数据库,专为游戏状态储存而设计,可支撑全球规模的多人游戏。

谷歌:请介绍一下《精灵宝可梦Go》?

James:这是一款鼓励玩家去户外活动的LBS AR游戏,与传统的手游有很大区别,除了在游戏中互动外,玩家还可以通过线下的社区活动来社交。在相同的地理位置,多名玩家可以一起抓同一个宝可梦,体验共享的AR场景。

Niantic会定期举办社区日、GO Fest、限时突袭等活动。通常,活动上线的区域会同时涌入大量玩家,访问量从每秒40万次上升至每秒100万次。

谷歌:在GO Fest期间,游戏开发团队如何扩展后端规模,以处理流量高峰?

James:我们采用多种托管服务来处理增加的计算流量,主要包括GKE和谷歌Cloud Spanner。《精灵宝可梦Go》的前端服务托管在GKE上,GKE基于谷歌云服务(Google Cloud),管理/扩展节点足够简单。

此外,谷歌工程团队还会在线上为Niantic提供帮助,共同监控和解决《精灵宝可梦Go》在大规模活动期间可能产生的问题。

实际上,在任何时间《精灵宝可梦Go》都有可能涌入大量用户,甚至需要约5000个Spanner节点来处理。除此之外,我们还采用了数千个专门运行《精灵宝可梦Go》的Kubernetes节点。同时,还使用额外的GKE节点来支持游戏的微服务,提升体验感。

这些节点同时运行,可支持全球数百万在线玩家,让他们实时共享同样的LBS AR游戏内容。

谷歌:《精灵宝可梦Go》从一开始就在使用Spanner服务吗?还是在广受用户欢迎后,才开始在游戏架构中加入Spanner服务?

James:最初,《精灵宝可梦Go》的数据托管在Google Cloud Datastore(谷歌云数据仓库)中,这项云服务的优势在于简单易入门,不需要开发者去管理额外的架构。

随着玩家规模逐渐增长,我们希望进一步控制游戏数据库的大小和规模,于是便采用谷歌Cloud Spanner服务。同时,我们也很喜欢Spanner提供的连贯索引功能,它让运行更加复杂的数据库模式变得足够方便。

谷歌:加入我是一名游戏玩家,正在玩《精灵宝可梦Go》。当我打开该应用,开始捕捉宝可梦,这一过程中背后都发生了什么?

James:当玩家捕捉到一只宝可梦,游戏服务器会通过Cloud Load Balancing(全分布式负载平衡解决方案,用于避免拥塞、降低延迟、提升安全性、降低成本)收到相关请求。

此外,《精灵宝可梦Go》首次启动后,储存在Cloud Storage中的全部静态媒体都会载入到玩家手机中。而且,Cloud Load Balancing方案还启动了云内容分发网络(CDN),用于缓存和运行游戏内容。

当玩家手机的访问流量到达Global Load Balancer后,系统会向NGINX(高性能HTTP和反向代理web服务器)反向代理发送请求。接着,反向代理将流量发送到游戏服务器的前端。

Kubernetes还有一个重要部分是空间查询后端(Spatial Query Backend),这项服务会保存基于共享空间的缓存,并用这些缓存来计算地图上显示哪些宝可梦、道馆和补给站(PokeStops)、玩家的时区等任何基于地理位置的内容。

简单来讲,大概是前端负责管理玩家,以及玩家和游戏之间的交互,而空间查询后端则负责地图。同时,前端从空间查询后端获取信息,并发送给用户。

谷歌:那在抓宝可梦时又发生了什么?

James:玩家抓住宝可梦后,系统会通过API从GKE前端向Spanner发送事件。当你更新道馆和补给站地图时,系统请求会发送更新的缓存,并转发至空间查询后端。

Spanner中储存的数据是连贯的,因此在收到缓存更新后,内存中的空间数据也会更新,用于处理之后前端发送的请求。然后,前端再次从空间查询后端获取信息,发送回用户。

谷歌:那么,如何确保统一地理位置的玩家,能够看到相同的宝可梦数据,并保持相对同步呢?尤其是在活动期间。

James:《精灵宝可梦Go》服务器中的一切数据都是确定的,因此,多个客户端在同一个物理位置可以查看到相同的数据,即使这些玩家使用不同型号的手机。而在在线人数多的活动期间,游戏将处理大量缓存和时间同步,所以全部服务器需要同步更新设置变化和事件发生时间,为多名玩家提供共享AR的体验。

谷歌:玩家在玩《精灵宝可梦Go》时,服务器一定产生了大量数据,那么Niantic的数据分析流程是怎样的,都分析哪些数据?

James:是的,这款游戏每天可生成5-10TB数据,我们会将这些数据储存在BigQuery和BigTable中。

团队中的数据科学团队会关注游戏中的事件数据,用于分析玩家行为,以及验证宝可梦地图布局的效果符合预期,或用于市场报告等等。

除了BigQuery外,我们还会使用Dataflow作为数据处理引擎,批量处理储存在Bigtable中的玩家日志。

同时,还会处理一些串流数据,包括检测作弊、寻找和相应不正常玩家信号。

为了获取全球地理位置和生态信息(用于在地图上设置补给站和道馆),我们从OpenStreetMap、美国地质调查局、Niantic Wayfarer地理数据众包平台等数据库中获取信息,未来还将构建一个实时动态更新的全球地图。

谷歌:未来,《精灵宝可梦Go》的活动规模可能会继续扩大,如果流量高达数百万用户/秒,那么系统服务器将如何扩展?

James:随着活动规模扩大,系统中数据管道(pub sub、BigQuery Streaming等等)的负载也将增加,我们需要做的就是确保留出预期的配额。

参考:

https://cloud.google.com/blog/topics/developers-practitioners/how-pok%25C3%25A9mon-go-scales-millions-requests

( END)


推荐阅读

每天五分钟,轻松了解前沿科技。
——青亭网

笔者刚毕业那会儿,和部门的同事一起去装配车间看设备调试。看到一个零件表面光亮,照得出人影,简直可以当镜子使。用手去摸,入手光滑冰凉,丝毫没有粗糙之感,用指甲按了..

大家好,关于游戏体验极差是什么意思很多朋友都还不太明白,今天小编就来为大家分享关于游戏体验极差是什么意思呀的知识,希望对各位有所帮助!LOL是不是已经到了游戏体验极差的地步了应该不会吧,现在英雄联盟还出了新的天赋系统,这些都是给予玩家的新的一种体验啊。而且现在会做任务的皮肤也是白送..

今天给各位分享游戏里梦魇是什么意思的知识,其中也会对游戏里梦魇是什么意思啊进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!王者荣耀梦魇在攻击里面吗王者荣耀梦魇在攻击里面。王者荣耀游戏里的梦魇指的是梦魇之牙,一般是法师用的一个装备,主要特效是重伤特效,能使得目..

大家好,相信到目前为止很多朋友对于兵戈游戏是什么意思和兵戈游戏是什么意思网络用语不太懂,不知道是什么意思?那么今天就由我来为大家分享兵戈游戏是什么意思相关的知识点,文章篇幅可能较长,大家耐心阅读,希望可以帮助到大家,下面一起来看看吧!“宾戈”是什么游戏?“宾戈”有点类似于“OX”的..

今天给各位分享游戏里dof是什么意思的知识,其中也会对dnf手游吧进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!dof文件怎么打开?里边一般是装什么的? 用什么打开程序文件,不要打开。你可以用Delphi试试,改出问题不管,哈哈什么是自由度不知道楼主问这个是做什么啊..

很多朋友对于游戏王心眼什么意思和游戏王心眼的女神可以代替不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!游戏王“决斗之城手游”中的心眼有什么用?在游戏中再点一下,有心眼的解释但我觉得没什么卵用。说穿了就是你的怪比对面怪攻击力高的不显著的时候装备,原来只能打..

大家好,关于怎么停用微信游戏功能很多朋友都还不太明白,今天小编就来为大家分享关于怎么停用微信游戏功能呢的知识,希望对各位有所帮助!微信游戏怎么关闭微信游戏关闭方法:工具/原料:iPhone11、iOS15.5、微信8.0.261、打开手机微信,点击右下角“我”,进入个人页面,点击“设置”。2、进入设置..

大家好,相信到目前为止很多朋友对于游戏蘑菇党是什么意思和与蘑菇有关的游戏不太懂,不知道是什么意思?那么今天就由我来为大家分享游戏蘑菇党是什么意思相关的知识点,文章篇幅可能较长,大家耐心阅读,希望可以帮助到大家,下面一起来看看吧!剑侠情缘3 蘑菇党是什么蘑菇党就是专指喜好副本玩..

登上奥运赛场,能摘得一块奥运金牌,需要天赋,需要苦练,还需要幸运,然而,奥运会历史上有一位奇人——爱德华·伊根,他是在冬奥会和夏奥会均斩获金牌的全能运动员,也是..

大家好,关于游戏恶灵是什么意思很多朋友都还不太明白,今天小编就来为大家分享关于恶灵是什么鬼的知识,希望对各位有所帮助!有谁玩过《恶灵》这个游戏?家里没有半个人影,包括朋友罗杰和他所有的家族,都找不到。为了先认识一下周围的环境,先走走吧。用滑鼠在画面到处移动时,会发现滑鼠会变成箭头..

大家好,今天来为大家解答关于游戏发行什么意思这个问题的知识,还有对于游戏发行是做什么也是一样,很多人还不知道是什么意思,今天就让我来为大家分享这个问题,现在让我们一起来看看吧!什么是游戏发行?第一方游戏=主机商开发,并由主机商发行的游戏。全球最大第三方游戏发行商-暴雪Activision,微软..

大家好,小编来为大家解答游戏ac是什么意思这个问题,游戏里面ac是什么意思很多人还不知道,现在让我们一起来看看吧!穿越火线中经常说的AC指的是什么?有和没有有什么区别?CF中AC便是防弹衣和防弹头盔。防弹衣关键由衣套和EXO层两部份构成。在游戏里面如果有避弹衣得话,当被高爆手雷炸中的过程中还..

大家好,今天本篇文章就来给大家分享神舟战神tx6cu5ds游戏版什么意思,以及神舟 战神 TX6CU5DS对应的知识和见解,内容偏长哪个,大家要耐心看完哦,希望对各位有所帮助,不要忘了收藏本站喔。战神TX6TI-CU5DA1650ti是不是残血版不是。“残血版”、“满血版”是用户自行创造出来方便称呼的口..

大家好,关于七日杀里面的游戏参数是什么意思很多朋友都还不太明白,今天小编就来为大家分享关于七日杀是什么游戏的知识,希望对各位有所帮助!七日杀新建游戏里f6都是什么意思点Create New,意思是创建新存档,然后按照提示往下走。创建好后在这个列表里会有你刚刚创建的档,然后进游戏七日杀?..

大家好,今天来为大家解答关于老年人室内坐着的游戏这个问题的知识,还有对于适合老年人室内坐着的游戏也是一样,很多人还不知道是什么意思,今天就让我来为大家分享这个问题,现在让我们一起来看看吧!适合老年人的气氛游戏 老人平时在家无聊,时间过得非常的慢,所以平时老人和左邻右里玩一些游..

本文由 青亭网 来源发布

每秒百万次访问,每天10TB数据,AR游戏《精灵宝可梦Go》的背后

评论问答