IXProjectxCloud7_HERO-hero.jpg

本文翻译自《Microsoft xCloud: Azure Powered Game Streaming》,原文地址: https://buildazure.com/2019/06/24/microsoft-xcloud-azure-powered-game-streaming/ ,作者Chris Pietschmann。


微软正在构建一个云游戏网络,使任何设备上都能运行主机级别的高质量游戏。很明显,微软已经意识到并非所有游戏玩家都会购买Xbox,因此这家公司正在开发一种基于云的游戏流媒体服务,而不是专注于开发只能在Xbox运行的游戏,并以此让世界上任何地方的任何人都可以玩上原先只能在Xbox上玩到的游戏。这项服务名为Microsoft xCloud,它建立在Microsoft Azure之上。


游戏上云的优先考虑事项


在建设游戏流媒体服务时,有许多衡量游戏串流后能不能流畅运行的事情需要考虑:比如需要多低的延迟才能实现按钮点击后快速进入游戏?想象一下,在FPS(第一人称射击游戏)中,在明显是玩家先开火的情况下,玩家直到被击倒后武器才开火的情况。这是云游戏平台无法吸引游戏玩家的重要原因。并且,视频和音频流都需要足够高的带宽,才不会出现声音和画面断断续续的问题。当玩家从云端向设备串流游戏时,延迟和性能最先被感知;但在本地设备上播放和呈现所有内容时,这一切都不是什么问题。


Azure中的xCloud硬件


创造Microsoft xCloud游戏流媒体服务的整个过程对于Microsoft来说是一个长达数年的旅程。他们一直致力于制造定制化的硬件,并由Microsoft Azure数据中心托管。这些硬件基本上是将Xbox One的主板集成到机架式的服务器刀片中。这意味着Microsoft xCloud是Microsoft Azure服务以及此定制的Xbox服务器刀片硬件的组合。


为了组装这些Xbox服务器刀片,微软的设计人员将Xbox One主机的外壳拆掉,只留下其中的主板部分。然后他们根据Xbox的主板重新设计了服务器刀片,以便在单个刀片机中放下多张主板。所以,这不是简单地在数据中心托管一堆Xbox One主机。


由于Xbox One内部的硬件并非“标准化”的硬件,因此需要为xCloud服务器刀片单独定制。 比如,Microsoft Azure具备支持标准化Nvidia GPU的 N系列虚拟机(VM)。但这些N系列虚拟机因为整体架构的原因,无法与Xbox One硬件共享。


由于Xbox One硬件为专门设计,因此可从其硬件中挤出最佳游戏性能。还有一些特定的硬件设计是在运行于其上的操作系统(OS)的软件中进行的,这些特性也会在玩游戏时运行。比如GPU的设备驱动程序,存储设备等等。当然,这些都可以虚拟化,但虚拟化牺牲性能是一种普遍现象,而且游戏的要求可能不会与这种牺牲一致。出于这个原因,xCloud服务器刀片硬件的开发很可能仅用于托管Microsoft xCloud。


搭建特制的xCloud服务器刀片并在Microsoft Azure数据中心托管它们,无疑是Microsoft自拥有Microsoft Azure以来的最为独特的基础设施建设。这使得微软不仅可以构建和托管xCloud这样的服务,更能根据服务特性搭建硬件基础设施,这是其他任何公司都无法在Microsoft Azure中完成的。


除了硬件方面,微软正在开发新的软件工具,以更好地支持游戏串流。正在设计的软件中,新的视频编码技术能够更好地满足Microsoft xCloud的游戏串流需求。


Azure区域部署


有了专门用于xCloud的定制化服务器刀片,接下来就是将这些刀片分布到各个Azure数据中心/区域中,以全球都能享受到xCloud服务。大多数(可能不是全部)Microsoft Azure公共云中的数据中心和区域可能会托管这些xCloud刀片服务器机架。


为了更好地服务德国,中国和世界其他地区的游戏玩家,微软可能不仅仅会通过“标准”Azure公共云提供服务,还会通过“独占云”(sovereign cloud)提供服务。在整个系统中,将独占云区域(如德国和中国)合并管理能更好地服务玩家。但即便如此,数据主权政策意味着这些地区(德国和中国)的游戏玩家仅仅被允许仅连接到这些地区的xCloud服务器,以托管和支持当地的游戏玩家。这并不是什么新鲜事情,因此可以肯定Xbox Live已经恰当地处理了这个问题,但是xCloud做同样的事情并不值得。


在研究微软如何解决像xCloud这样的实时游戏流服务的延迟和性能要求时,重要的是要考虑微软Azure的大规模全球足迹。Microsoft Azure由全球54个地区组成。这些区域中的每一个都由多个单独的数据中心组成,每个数据中心托管数十万(或更多)刀片服务器。


微软计划在多少Azure区域部署xCloud刀片服务器在内部也是一个谜团,并且在未来是否正式宣布相关数字也暂时无从知晓。其他数据诸如数据是Azure中托管的xCloud刀片服务器的数量,以及每个区域和/或数据中心内部署的数量,都还是个未知数。


xCloud解决方案架构


虽然Microsoft xCloud游戏串流服务的完整云架构将依赖于定制的xCloud刀片服务器,但其余服务仍使用Microsoft Azure搭建的服务。这些服务与所有Azure客户目前正在使用的服务相同。


关于使用哪种Microsoft Azure服务来构建服务,应该不是个问题。当然,有一些“核心”的Azure服务,比如Azure Storage、Azure Compute (Virtual Machines, Virtual Networks, etc)

以及Azure App Service非常适合xCloud。此外,还有其他Azure服务,如Azure Cosmos DB、Azure Front Door、Azure Traffic Manager、Azure Functions、Azure Event Hubs、Azure CDN (Content Delivery Network)等功能可以帮助实现全球分发,弹性和高可用性,从而增加价值。这些实际上是许多企业客户目前已经使用的相同服务。


请注意,上述列表仍有保留,因为可以特别突出显示一些Microsoft Azure服务。此外,没有任何内部知识确切地知道正在使用哪些服务或体系结构来构建Microsoft xCloud。微软可能永远不会公开发布他们如何构建服务的技术细节,但可能其中许多服务都会被利用。


总结


微软正在为xCloud打造许多令人兴奋的东西。将Xbox One主机放在Microsoft Azure中听起来很简单,但它远非如此。在数据中心托管各个主机时不可行的,而是需要为xCloud设计和打造包含Xbox One硬件的定制化刀片服务器,才能使Microsoft能够构建更好地设计用于托管Microsoft xCloud等实时游戏流服务。