深入了解 Windows Azure

使用 Windows Azure 满足新型游戏的需求

Bruno Terkaly
Ricardo Villalobos

本文介绍 Windows Azure 高速缓存服务,是在预览。信息如有更改。在线、 移动和社会游戏有采取世界的风暴,以惊人的数字有关的并发的球员,时间花了播放和下载的应用程序。就在最近,Facebook 分享,有三分之一的其全球用户 (2 亿 6000 万)积极在其桌面和移动的网站上玩游戏。这是特别的挑战游戏开发商的只是一个指标和发布公司必须的脸 — — 包括用户在多个平台和设备,玩家期待接收即时通知状态更改时,它们基于时间的游戏的了,游戏会从启动到病毒在短短几天,和想要达到在世界各地的多个位置的观众,同样的游戏的挑战。

值得庆幸的是,公共云计算提供了大量的替代办法来处理这些情况下,使您可以集中发展你的游戏应用程序,而不是如何提供基础结构以支持身份验证、 计算、 数据或媒体的要求。在本文中,我们会探讨如何解决这些问题和其他常见的方案,使用最新的Windows Azure 服务和组件。

图 1 显示了一个典型的体系结构的移动客户端在云中,无论是基于转动或实时方案支持多人游戏。不同的组件分配给生成游戏的后端,引入概念的控制器或代理,作为网关或交通控制器与多个服务的所有客户端交互所需的最常见任务。


图 1 软件体系结构实时、 多玩家游戏的移动客户端

在下面的段落中,我们会仔细看看每个组件。

多人游戏服务器 (基础设施作为服务虚拟机)

多人游戏服务器通常基于开放源代码或特许框架,作为事件的权威来源的客户端连接到他们,并提供有关其他玩家加入了通过低延迟调用相同的服务器的信息。这些框架需要有状态交互的客户端,以及访问到本地存储,使虚拟机 (Vm) 在 Windows Azure 为此组件的绝佳选择。这些游戏服务器框架的一些例子是柚 (bit.ly/1i9heBe)、 Marauroa (bit.ly/am9MOi) 和光子服务器 (exitgames.com)。

要将这些框架的任何部署到虚拟机,您可以从 Windows Azure 图像库管理门户中创建实例 (bit.ly/197eXED),或直接创建自定义 VM 映像作为 VHD (HYPER-V) 文件 (bit.ly/PQso1a)。

请记住,实现游戏服务器可以变成一个复杂的过程,需要你来网络滞后补偿和正确使用的通信协议 (如 TCP 或 UDP) 来优化与客户端通信的解决方案。

游戏控制器或代理服务器 (作为服务云服务平台)

该解决方案的核心是游戏控制器或代理服务器,提供多项服务,包括以下内容:

  1. 身份验证:验证客户端发送的前球员可以连接到游戏服务器的凭据。
  2. 配对:分配玩家有类似首选项设置为相同的游戏服务器。决定可能也是由驱动的位置,尽量减少延迟时间。
  3. 代理服务器的数据:在游戏中请求提供服务,从游戏服务器或客户端 ; 与外部存储 ; 交互 并发送回数据历史得分、 配置文件信息、 首选项、 或贷方余额等。
  4. 置备:增加或减少 Vm,使用一种基于连接的播放机数的扩展方法的数目。
  5. 通知:与要告知玩家的游戏状态的通知服务进行交互时他们不在线。这个要支持多个平台 (Windows、 Android、 iOS) 和设备类型。
  6. 代表团:策划与外部服务包括但不是限于发送电子邮件消息、 处理付款,和日志记录游戏信息的互动。

Windows Azure 云服务是完美的游戏控制器,其中必须能到句柄无国籍的要求,以及容易出规模基于客户端和游戏服务器请求的数目。此外,由于 Windows Azure 中的虚拟网络所提供的福利,云服务可以直接与游戏服务器通信承载于虚拟机,无需使用外部终结点到体系结构添加了额外的安全层。可以创建和部署从不同的 Ide,包括 Visual Studio.NET 开发或 Eclipse Java,云服务。有关创建云服务的详细信息可以在发现 bit.ly/19MYq5A。如果您想要连接的虚拟机和云服务使用虚拟网络,本教程在bit.ly/GYcG5t 可以帮助。

刚才讨论的责任可以由单个群集 Web 或辅助的角色,或拆分成许多的云服务,根据并发用户的数量和复杂性的在线游戏处理。Windows Azure 提供的好处之一是多个部署模型,包括基础设施作为服务 (IaaS) 或平台作为服务 (PaaS)。关键决定因素是委派给云供应商的软件图层数量 — — 在此情况下,Microsoft。有关选择合适的云部署和执行模型的详细信息可以在发现 bit.ly/153kRXM

现在我们会探讨如何同步控制器可以执行这些责任在 Windows Azure 平台中使用的其他组件。

身份验证 (Windows Azure Active Directory 访问控制服务)

移动客户端需要访问一个多人游戏平台的第一步尝试对使用一组凭据的服务器进行身份验证。在现代游戏中很重要的是要支持从多个身份提供程序,牢记用户有不同的偏好,当它来到在线安全验证。一些人可能感到更舒适使用社交网络凭据,例如 Facebook,yahoo!或 Twitter。其他人可能更愿意提供游戏本身,如活动目录框架基础的身份验证。

Windows Azure 访问控制服务 (ACS) 提供一种简单的方法来执行这种身份验证。它支持 Windows 标识基础 ; 与集成 提供了与 Windows Live ID (Microsoft 帐户)、 谷歌、 雅虎的外框兼容性和 Facebook ; 可以实现方案基于 OAuth 2.0,WS 信任和 WS 联合议定书 ; 并认识到 JSON Web 令牌 (JWT)、 SAML 1.1、SAML 2.0 和简单 Web 令牌 (SWT) 令牌格式。

在这种情况下,游戏客户端获取发出的 ACS,登录到游戏服务器将通过游戏代理服务器上的安全令牌。此标记包含一组有关该用户的标识声明。ACS 不会发出一个令牌,除非用户第一次有效通过提供证明身份的安全令牌从另一个受信任的颁发者或身份提供程序已通过身份验证的用户。这一过程所示图 2


图 2 使用 Windows Azure 访问控制服务的身份验证过程

婚介

在多人游戏视频游戏中,玩家分配到相应的游戏服务器基于他们的首选项或位置的过程称为牵线搭桥。一旦游戏客户端已经过身份验证,游戏代理服务器将返回匹配玩家的喜好,基于他的 IP 地址,以及额外的安全凭据,以防他们游戏服务器本身所需要的游戏服务器的列表。转让背后的逻辑通常基于推荐服务器列表中每个数据存储在某些类型的缓存机制的中心。原因缓存被建议,这是性能:避免来回访问主存储大大改善了玩家的体验。Windows Azure 提供新的缓存服务 (目前在预览),可以跨多个服务和客户端访问。这项新服务是一个分布式的、 内存中的、 可扩展的解决方案,使您能够生成高度响应的应用程序通过提供超级快速访问数据。它是非常容易地从使用相应的 SDK 的.NET 应用程序中访问。详细的说明可在 bit.ly/15IltBt。婚介过程将返回游戏客户端应该连接到游戏服务器的相应 IP 地址。

当游戏会话已定稿 (在窗体的一个匹配,打击,或简单地通过退出游戏的玩家日志记录) 时,玩家可以留在同一服务器上或重定向回配对过程,以便找到一个不同的服务器,在他们的首选项已更改的情况下。

数据代理服务器 (Windows Azure 存储空间)

球员已经连接到基于他们的首选项相应的游戏服务器,请求有关游戏配置、 存储余额或通过游戏控制器/代理,其中通常公开 API 对数据存储库中最常见的操作与路由的任何其他用户相关的数据。有两个主要决定要为此:用户和游戏的信息和框架 》 公开游戏服务器可以访问的服务的存储机制。

Windows Azure 提供用于存储信息,我们已经在前面的文章中所述的多个选项。根据数量和复杂性的查询、 数据的结构和所需的自定义级别,您可以选择从 Windows Azure SQL 数据库或 NoSQL 方法如 Windows Azure 表存储等传统关系资料库 (bit.ly/YrYcQP)。

无论存储库中选择,在此信息服务应在 rest 风格的方式,使用框架,例如 Windows 通信基础 (WCF) 或最近发布的 ASP.NET Web API 公开 (asp.net/web-api)。这些框架可以部署到云服务或虚拟机。

Windows Azure 还提供交钥匙工程服务,与一个强大和灵活的其余 API 结合在云计算的关系数据库的力量。这被称为 Windows Azure 移动服务,和它是加快发展的这片游戏体系结构,具有容易跟随向导和自动缩放功能的简单方法。有关此服务的详细信息可以在我们 2012 年 11 月列中,找到"Windows Azure 移动服务:鲁棒回来结束您的设备应用程序"(msdn.microsoft.com/magazine/jj721590),或官方的 Windows Azure 页面上 (bit.ly/188Llcg)。

置备

每个代理的控制器游戏也可以作为添加或删除游戏服务器,需要他们的资源调配或自动缩放引擎。但是,注意 Windows Azure 现在提供不同的部署模式,包括虚拟机、云服务和 Web 站点的所有自动缩放功能。

通知

游戏玩家使用移动设备依赖于接收通知,当他们是脱机状态,特别是对于基于转动或基于时间的游戏需要保持的虚拟属性或项最新 (这一概念由等 FarmVille 游戏非常常见)。将通知发送到手机游戏玩家时,你面对两个主要问题:不必伸手给玩家在他们的移动设备上使用不同的平台和构建和维护基础设施能够达到数以百万计的用户。值得庆幸的是,Windows Azure 提供一项称为通知集线器,提供了一个通用的 API,将推送通知发送给移动平台,包括 Windows 存储区、 Windows Phone、 iOS 和Android 的各种服务。同时,推式通知被发送到数以百万计的用户在几分钟,不是数小时内。图 3 显示代码段在 C# 中,将一个简单的通知发送到 Windows 存储区和iOS 的应用程序使用多个类别。

图 3 发送通知到 Windows 存储区和 iOS 的应用程序使用 Windows Azure 通知集线器

 

private static async void SendNotificationAsync()
{
  NotificationHubClient hub =
    NotificationHubClient.CreateClientFromConnectionString(
      "<connection string with full access>", "<hub name>");
  var categories = new string[] { "World", "Politics", "Business",
     "Technology", "Science", "Sports"};
  foreach (var category in categories) {
    var toast = @"&lt;toast&gt;&lt;visual&gt;&lt;binding template ="
      "ToastText02""&gt;&lt;text id=""1""&gt;" + "Breaking " +
      category + " News!" + 
      "&lt;/text&gt;&lt;/binding&gt;&lt;/visual&gt;&lt;/toast&gt;";
    await hub.SendWindowsNativeNotificationAsync(toast, category);
    var alert = "{\"aps\":{\"alert\":\"Breaking "+ 
      category +" News!\"}}";
    await hub.SendAppleNativeNotificationAsync(alert, category);
  }
}

 

职责下放给其他服务 (SMTP、 商务)

每个代理的控制器游戏还应充当网关的访问其他服务如发送大量电子邮件消息 (通过 SMTP,或处理实时游戏图像引擎。Windows Azure 存储将允许您快速发现、 购买和提供应用程序从其他 Microsoft 合作伙伴。这些服务可以与 Windows Azure 组件来构建复杂的游戏或添加不受云平台本机支持的功能组合。有关 Windows Azure 存储和开发商服务的目录的详细信息可以在发现 bit.ly/1carBrd

游戏分析和大数据

收集、 分析和报告从游戏服务器收集的数据是对查找瓶颈,提高游戏的性能及货币化和广告目的,确定的地区玩家在那里花他们的时间至关重要。Windows Azure 允许您使用 MapReduce 方法,称为 HDInsight,作为一种服务,它允许 Hadoop 集群的简单、 直接地安装。使用 Microsoft Office 等的蜂巢或甚至熟悉的工具,可以创建丰富的报告和图表。有关此组件的详细信息可以在 2013 年 9 月的专栏,发现"Hadoop 和 HDInsight:在 Windows Azure 的大数据"(msdn.microsoft.com/magazine/dn385705)。

总结

我们只抓伤了如何创建丰富的、 可扩展的解决方案,为移动游戏业相结合的 Windows Azure 平台,满足的需求和要求通过社会网络和大量的玩家,被吸引到这些应用程序创建的多个组件的表面。公共云计算提供了一个灵活的现收现付模式,使各种规模的公司能够在这一空间中竞争。

Bruno Terkaly是 Microsoft 的开发推广人员。他的知识深度来源于多年来相关领域以及使用大量平台、语言、框架、SDK、库和 API 编写代码的经验。他不辞辛苦,就有关构建基于云的应用程序(特别是使用 Windows Azure 平台)编写代码、发布博客并给予现场演示。您可以阅读他的博客 blogs.msdn.com/b/brunoterkaly

里卡多 · 比利亚洛沃斯 是具有超过 15 年的经验设计和创建应用程序的公司在多个行业的经验丰富的软件设计师。他从达拉斯大学工商管理持有不同的技术认证,以及硕士学位,为微软,帮助世界各地的公司要在 Windows Azure 实施解决方案作为一个云建筑师在 DPE 全球范围内参与合作伙伴团队工作。您可以阅读他的博客在 blog.ricardovillalobos.com

Terkaly 和比利亚洛沃斯共同提出大行业会议。他们鼓励读者的 Windows Azure 内幕交易与他们联系的可用性。也可以拨打 Terkaly bterkaly@microsoft.com 和比利亚洛沃斯也可以拨打 Ricardo.Villalobos@microsoft.com

衷心感谢以下技术专家对本文的审阅:凯文 · 阿什利 (Microsoft)
凯文 · 阿什利在 Microsoft 工作作为建筑师和技术福音传教士。他是一个作者的专业 Windows 8 编程:与 C# 和 XAML 的书和最受欢迎的应用程序的窗口和 Windows Phone 应用程序开发。凯文工作与创业公司和合作伙伴、 软件设计、 商业和技术战略提供咨询意见。之前微软,他是早期阶段云及商务智能软件启动时的创建者。在他作为高级软件开发人员和架构师的角色,凯文为财富 500 强公司和对冲基金全球开发网格、 数据仓储和实时交易解决方案:美国、 英国、 欧洲和亚洲。凯文在金融数学、 计算机科学和工商管理硕士学位。凯文的博客:http://kevinashley.com 和 twitter 用户: @kashleytwit