使用 Windows Azure 的场景和解决方案

  • Abel Avram
  • 侯伯薇

2010 年 5 月 9 日

话题:.NET云计算Windows AzureDevOps语言 & 开发架构

在最近的一次在线演讲中,微软的架构布道者 Bill Zack 详述了使用云的关键场景以及 Windows Azure 所提供的解决方案。

一些应用程序的使用模式(usage pattern)决定了它们非常适合云平台,但是对于另外一些,最好不要把它们部署到云上,因为那样会让其所有者付出更大的成本。

工作负载

  • 开启和关闭:这些应用程序在一天或者一年之中,只是在特定的时间段内偶尔使用。 很多批处理程序只会在每天或者每月的最后才会执行,它们就归属此类。 把这样的应用程序放在云中,会大大节省所需要的资源,因为大部分时间它们都不会使用任何资源。
  • 迅速增长或者迅速失败:这种工作负载模式遇到的是这样的情况,启动新业务的时候,无法精确地预测成功率有多大,而这正是实际容量所需要的。 这些应用程序在启动时容量很小,但随着时间的推移、请求的增加会不断增大。 这样的应用程序很适合云平台,因为云平台能够快速适应不断增长的资源。
  • 不可预知的爆发:例如,当 web 服务器上的负载突然增大到某个峰值,导致系统无法处理瞬间的流量。 所有者应该提供足够的容量来应对这样的负载。但是他们不希望看到这样的流量峰值。 即便他们确实预先考虑了,增加的容量通常也不会用到。 这是另一种很适合云平台的情况。
  • 可预测的爆发:随着时间的变化,负载会持续地依照预测的方式变化。 所有者会提前购买必须的设备和软件,而不需要依赖于云提供商。

接下来,Zack 描述了针对计算、存储、通信、部署和管理的场景,以及 Windows Azure 所提供的解决方案。

计算

  • 按需提供的(On-demand)应用程序实例:这种模式针对的是一种特殊事件,其中应用程序需要迅速增大,稍后再减小。 Windows Azure 使用自动管理的 Web 和 Worker 角色来适应这样的需求。
  • Worker 角色分配:当我们将大型的工作切分为小块完成,每小块都与单独的 Worker 角色实例关联的时候,采用的就是这种机制。

存储

  • Blob:Blob 是用来存储大量非结构化数据的。
  • :用来存储海量数据的非关系型解决方案。
  • DB:SQL Azure 提供了云中的关系型数据库。
  • 数据保护:如果存储在云中的数据中包含敏感数据,并且有人想要确保它不会公开,那么可以对其进行加密。 Windows Azure 会在不久的将来提供加密 / 解密服务。
  • 信息服务:微软拥有数据集市,它是针对想要买卖数据的公司的。

通信

  • 面向服务整合:Azure 允许应用程序使用其它应用程序所提供的服务。 微软的整合方案是WCF Web 服务,worker 角色能够暴露这样的端点。
  • 消息传递:消息传递是由 Windows Azure Queues 提供的,用来在 web 和 worker 角色之间异步地通信。
  • 穿过防火墙的消息传递:通过 Service Bus Queues,应用程序能够彼此通信,而不需要打开额外的端口。

部署

  • 云部署:应用程序是使用独立的服务定义文件和配置文件部署到云上的,这些文件会根据目标角色打包。 web 和 worker 角色以及它们的类型都定义在服务定义文件中 ,而服务配置文件中则包含了每种角色的数量。
  • 从基于前提的(On-Premise)应用程序转移到云:尽管这并非对于大多数应用程序都是可行的,然而针对某些应用——像简单的 ASP.NET 站点——还是可以做的。
  • 混合的环境,基于前提和云:通过使用 REST 接口、对 SQL Azure 的安全访问、服务总线以及访问控制服务,Windows Azure 使我们可以将基于前提的应用程序和云中的服务组合在一起。
  • 双重应用程序:我们可以将应用程序设计为在基于前提和云两种环境中运行,但是这种设计过程的会比较复杂。 如果一家公司将其应用程序在自己的服务器上运行,但是在季节性的高峰期时(像圣诞节)使用云,那么这会非常有用。
  • 安全联合:Windows Azure 通过访问控制服务(Access Control Service)提供了安全联合。
  • SaaS:部署在云中的应用程序可以作为服务提供。

管理

  • 为运维而设计:Windows Azure 提供了诊断 API,使得运维团队可以监控并识别问题。
  • 服务实例管理:应用程序实例可以通过 API 或者 Azure 门户启动、停止或暂停。

查看原文:Scenarios and Solutions for Using Windows Azure

.NET云计算Windows AzureDevOps语言 & 开发架构