在Azure中公开半静态信息的最有效方法

时间:2012-09-18 13:16:25

标签: ios azure azure-storage azure-storage-blobs

我正在构建一个社交游戏,需要在服务器上存储有关玩家,游戏和棋盘的状态信息。 状态信息可以很容易地以字节数组进行编码以提高效率,并且可以由单个ID 引用(例如,用户ID,游戏ID)。我预计会有很多读取比写入更多,并且写入不一定非常有效。

使用 Windows Azure ,我想找到最有效的方式来存储和公开这些信息,我的意思是(按重要性顺序):

  • 最快的响应时间
  • 运营成本最低。

我最初的目的是使用blob存储来公开这些字节blob(使用Web角色在需要时更新它们)。但是性能最好吗?或者,我可以将状态信息存储在 SQL Azure数据库中,并通过 Web API 公开它(构建在飞行中回应。)

从iOS设备访问blob信息时是否有任何问题?

3 个答案:

答案 0 :(得分:1)

根据所提供的信息,我认为blob存储更有可能满足您的两个要求,如果您拥有庞大且分散的受众,则更是如此。由于延迟似乎是一个问题,使用SQL Azure可能需要部署到多个数据中心以支持“全球受众”,然后您需要在实例中引入某种数据同步层。 / p>

使用blob存储,每个字节的存储成本肯定更低,并且您可以利用CDN获得额外(但仍然可管理)的成本,以减少全球受众的延迟。听起来你并不需要SQL Azure的关系能力。

正如我在上面的评论中所提到的,请密切关注Windows Azure Mobile Services。它可能无法满足您的需求今天,但已宣布其他平台支持,并且使用目前来自Windows 8的服务非常简单。顺便说一下,它使用SQL Azure作为后端,这是一个成本考虑因素(尽管服务本身在预览模式下是免费的)。对于它的价值,我确实找到了this blog on using Windows Azure Mobile Services with iOS - 正如您对开放标准和接口所期望的那样,一切皆有可能:)

答案 1 :(得分:1)

您最初使用blob存储是一个很好的起点。假设您希望在应用程序中显示一些高分(假设这是半静态的,您可以谈论)。

工作者角色可以计算前4个小时的前100个用户并将此列表存储在blob中(作为JSON字符串)。现在,您需要确定blob存储的性能是否足以满足您的应用需求?看看scalability targets

  • 单个blob最高60 MBytes /秒
  • 事务:每秒最多5,000个实体/消息/ blob(每个存储帐户)

如果您有大量用户,交易限制可能是瓶颈。在这种情况下,您可以提高性能by using the CDN。使用CDN,您的内容将复制到24 countries中的CDN节点上。这意味着您的最终用户将从被认为“更接近”/更快的节点下载blob,而不依赖于托管您的应用程序的数据中心,并且您不会受限于之前已设置的可伸缩性目标。

您还需要考虑到可能存在您想要引用此半静态数据的情况(可能每次用户完成游戏时),而无需实时执行此操作(您不需要想要阻止用户,如果这是一个长时间运行的过程)。使用Queues, Topics, and Subscriptions可以轻松解决此类情况。这允许您在用户完成游戏时将消息放入队列(或主题)中,并且有一个或多个后台“工作人员”(可能在其他角色/ VM / ...上)处理该消息。

答案 2 :(得分:0)

我个人非常喜欢在Windows Azure Cloud Service的“本地存储”区域中缓存半静态内容。当请求进入时,如果您已经拥有该文件,则可以将文件流引用返回给请求者。此方法可防止您将blob存储帐户直接暴露给使用客户端,还有助于降低任何交易成本。还有一个潜在的优势,即允许您处理请求的服务将任何业务逻辑引入流中,例如ACS样式行为。

当然,这需要权衡,因为您需要管理缓存,云服务可用的带宽现在必须帮助提供请求响应,而不是让Windows Azure存储为您完成。< / p>

相关问题