前些时日,Google在搜索页面上的Google Doodle,提供了万圣节幽灵多人联机游戏,在65小时中,吸引了62个国家共1亿名玩家游玩,在最高峰时段甚至同时有50万名玩家在线上,而Google今天在自家博客,公开了以云计算服务,设计全球规模低延迟联机游戏的方法。
这个万圣节Google Doodle游戏,是Google云计算团队与Doodle团队合作,使用了Google和Unity共同开发,在9月发布的开源配对框架Open Match,完成万圣节Google Doodle多人联机的玩家配对工作。Google提到,要以全球玩家作为游戏群体,设计出低延迟、高可靠和高可用的配对服务并不简单,搭传统配对器更是难以兼顾质量。
Doodle团队将Open Match的分布式微服务和Google Kubernetes Engine(GKE)相结合,可以通过简单的增加额外的前端容器,来应对突然增加的玩家所带来额外的工作负载,Google提到,虽然在他们的使用场景,是用GKE来执行Open Match,但事实上,Open Match也可以在任何地方搭配Kubernetes运行,因为该项目是一个开源框架。架构设计:(来源Google)
配对玩家需要的数据都储放在CloudMemorystore中,Cloud Memorystore是Google以內存数据库Redis,所提供的完全托管的內存数据存储服务。在Open Match使用Cloud Memorystore中的数据,完成玩家配对后,这些结果会被发送到全球Cloud Pub/Sub主题中等待,直到有闲置服务器可以使用。
系统需要决定经过配对后的玩家,其游戏应该在哪一个GCP区域中运行,过去的解决方法都是对所有IP进行地理DNS查找,或是使用复杂的客户端路由规则,而这次Google Doodle使用GCP的全球负载平衡器,将所有GKE集群链接到单一负载平衡器上,由负载平衡器统一负责后端路由规则,如此便只需要一个配对器DNS入口,进而简化了客户端逻辑和路由规则。
Doodle团队将GKE作为游戏服务器,并为每个游戏服务器构建生成容器镜像文件,这些镜像文件被存放在Google容器注册表gcr.io服务中,方便GKE集群访问。游戏服务器会在启动时链接配对器,并汇报位置以及链接端口,接着等候预期玩家列表,而玩家会从Open Match收到游戏服务器的位置和链接端口,并直接联机到游戏服务器,与其他玩家进行游戏。
这个2018年万圣节Google Doodle在澳大利亚时间的半夜于第一个区域上线,18小时过后在全球62个国家运行,总共为1亿玩家提供了游戏服务,总计超过200万计算小时。Doodle团队将游戏服务器设置在GCP的12个活跃服务区域中,以提供低延迟的游戏体验。