每秒百万次访问,每天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等等)的负载也将增加,我们需要做的就是确保留出预期的配额。

参考:

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

( END)


 
   推荐阅读    




 
每天五分钟,轻松了解前沿科技。    
         —— 青亭网  
标签:
qingtinwang
青亭网 微信号:qingtinwang 扫描二维码关注公众号
优质自媒体

小编推荐

  1. 1 发财树叶子蔫了怎么办(发财树叶子发黄干枯怎么处理)

    大家好,小丽今天来为大家解答发财树叶子蔫了怎么办以下问题,发财树叶子发黄干枯怎么处理很多人还不知道,现在让我们一起来看看吧!1、一、

  2. 2 癌症体质的人,通常有4个“特性”,希望你一个也没有

    千 百 万 环 保 超 市 会 员 共 同 关 注 !癌症,这个字眼总能让人心生惧怕,它如同沉寂潜行的死神,或者在任何人群中默默显现。然而,癌症并

  3. 3 乔布莱恩特总冠军(我想看乔布莱恩特)

    大家好,小美今天来为大家解答乔布莱恩特总冠军以下问题,我想看乔布莱恩特很多人还不知道,现在让我们一起来看看吧!1、迈克汤普森以状元的

  4. 4 夫君们笑一个男主(夫君们,笑一个)

    大家好,小伟今天来为大家解答夫君们笑一个男主以下问题,夫君们,笑一个很多人还不知道,现在让我们一起来看看吧!1、封城九宫主岚颜,从小心

  5. 5 可怜绣户侯门女独卧青灯古佛旁(可怜绣户侯门女独卧青灯古佛旁写的是谁)

    大家好,小美今天来为大家解答可怜绣户侯门女独卧青灯古佛旁以下问题,可怜绣户侯门女独卧青灯古佛旁写的是谁很多人还不知道,现在让我们一

  6. 6 人有三急是指哪三急呀(人有三急的三急指的是哪三急)

    大家好,小美今天来为大家解答人有三急是指哪三急呀以下问题,人有三急的三急指的是哪三急很多人还不知道,现在让我们一起来看看吧!1、通常

  7. 7 小学部|综合实践活动、劳动、地方课程教研|深耕细研不负春,“研”途花开溢芳菲——三学科本学期第二次联合研训

    深耕细研不负春“研”途花开溢芳菲三学科本学期第二次结合研训春之美,在于生机与勃发;教之美,在于钻研与提拔。4月18日上午,滨江区小学综

  8. 8 亚洲最帅男明星是谁(亚洲十大最帅男星)

    大家好,小美今天来为大家解答亚洲最帅男明星是谁以下问题,亚洲十大最帅男星很多人还不知道,现在让我们一起来看看吧!1、肖战能够成为亚洲

Copyright 2024 优质自媒体,让大家了解更多图文资讯!