首页 > 其他分享 >Kubernetes 落地案例|将 Pokémon Go 运行到谷歌云上

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

时间:2022-11-08 19:08:49浏览次数:40  
标签:Google Niantic Kubernetes 玩家 mon 歌云上 Go Pok


背景知识:

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

——百度百科



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


Kubernetes 落地案例|将 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 这样一个有意义的项目中的一员,实在是难得,能够为这么大范围内的人真觉得荣幸之至。


Kubernetes 落地案例|将 Pokémon Go 运行到谷歌云上_负载均衡_02

原文作者:Luke Stone


Kubernetes 落地案例|将 Pokémon Go 运行到谷歌云上_新版本_03


标签:Google,Niantic,Kubernetes,玩家,mon,歌云上,Go,Pok
From: https://blog.51cto.com/u_15129547/5834426

相关文章

  • Kubernetes K8S之Service服务详解与示例
    主机配置规划Service概述KubernetesService定义了这样一种抽象:逻辑上的一组Pod,一种可以访问它们的策略——通常被称为微服务。这一组Pod能够被Service访问到,通常是......
  • 20220923 17. 认识系统服务 (daemons)
    17.1什么是daemon与服务(service)常驻在记体体中的程序,且可以提供一些系统或网络功能,那就是服务系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面),这个......
  • 12 Ceph 与 Kubernetes 集成
    目录Ceph与Kubernetes集成概述Ceph与Volumes集成更多详情请参考准备工作容器中调用RBDvolumes测试验证PV和PVC存储集成准备工作定义PV和PVC容器引用PVC存储......
  • 【FAQ】从存储权限看HarmonyOS 3.0中应用适配
    问题背景:HarmonyOS3.0发布了,之前开发的Android的应用,发现系统选项中存储权限部分有变化,如下图:​​”存储“权限变为”媒体和文件“,且只能访问”仅媒体“的文件目录。因为项......
  • 【详细教程】一文参透MongoDB聚合查询
    MongoDB聚合查询什么是聚合查询聚合操作主要用于处理数据并返回计算结果。聚合操作将来自多个文档的值组合在一起,按条件分组后,再进行一系列操作(如求和、平均值、最大值、最......
  • kubernetes安装单机版并配置Dashboard
    一kubernetes安装1.主机配置虚拟机配置2GB/2CPU修改主机名hostnamectlset-hostnamek8s-masterhosts解析cat>>/etc/hosts<<EOF192.168.160.141k8s-maste......
  • centos快速安装kubernetes
    exportKKZONE=cncurl-sfLhttps://get-kk.kubesphere.io|VERSION=v2.3.0sh-./kkcreatecluster--with-kubernetesv1.22.12--with-kubespherev3.3.1#如果缺......
  • Kubernetes(K8S) 镜像拉取策略 imagePullPolicy
    镜像仓库,镜像已更新,版本没更新,K8S拉取后,还是早的服务,原因:imagePullPolicy镜像拉取策略默认为本地有了就不拉取,需要修改[root@k8smaster~]#kubectleditdeployment/......
  • kubernetes之kubectl与YAML详解1
      k8s集群的日志,带有组件的信息,多看日志。 kubectl命令汇总kubectl命令汇总kubectl命令帮助信息[root@mcwk8s04~]#kubectl-hkubectlcontrolstheKuberne......
  • 基于docker和cri-dockerd部署kubernetes
    基于docker和cri-dockerd部署kubernetesv1.25.31、环境准备1-1、主机清单主机名IP地址系统版本k8s-master01k8s-master01.666.comkubeapi.666.comkubeap......