扫一扫
关注微信公众号

三个层面解读微软云存储架构与应用
2010-08-10   网络

  应用程序离不开数据,同样云计算应用程序也离不开数据的支持。Windows Azure Service Platform,微软云计算服务平台通过提供Storage Service——Windows Azure Storage来存储云应用的数据。Windows Azure Storage由三个重要部分或者说三种存储数据服务组成,它们是:Windows Azure Blob、Windows Azure Table和Windows Azure Queue。在本文中将给大家介绍Windows Azure Storage中的这三种存储服务、Visual Studio环境下配置和使用开发存储和Windows Azure Storage应用场景。
  Windows Azure 存储服务的构成
  Windows Azure Storage由三个重要部分构成:
  Windows Azure Blob:存储大型数据。
  Windows Azure Table:存储表数据,类似关系数据库中的数据表,单有所不同,将在后文中介绍。
  Windows Azure Queue:为异步工作提供分派消息服务,有点类似Windows系统的消息队列。
  它们的组成也可以使用图1来描述:
 

Windows Azure 存储服务的构成

  图1 Windows Azure 存储服务组成


  在Windows Azure中使用存储服务最简单的方法是使用Windows Azure Blob。Blob存储二进制数据,如图像,XML文档,压缩文件和其它在容器内任意排列的字节。
  Blob存储数据是通过一个简单的层级关系来实现的,每个账户Account下有一个容器,这个容器就是用户定义的一套只有一个属性的Blobs(Blob集合),容器不直接存储数据,每个Blobs包含了多个Blob。Windows Azure Blob存储数据和层级关系如图2所示:
 

Windows Azure 存储服务的构成

  图2 Blob的层级关系


  Blob存储数据的地址是:http://.blob.core.windows.net/
  可以通过REST的方式来操作,也就是说可以通过如图1所示中的访问方式:Http/Https。在上传大文件的时候,我们可以先把大文件分割成多个Blob来上传,这样就解决了大文件上传的问题。Block对下载流程是透明的,下载者根本不知道也不用去知道它正在下载的文件被分成了多少个block。
  注意在PUT Blob操作中你可以上传最大64MB的数据创建一个Blob,通过上传连续块可以创建大于64MB的Blob,块最大只能是4MB。
  (2)Windows Azure Table
  Blobs只能针对大容量二级制数据存储,它真是太“不结构化”了。为了保存和使用云应用程序中具有紧密的数据,如在云存储服务中存储一个对象,这个对象是有些自己的属性,其实这样的对象我们可以看成是示例或者实体,于是Windows Azure Table就派上用场了。Windows Azure Table可以直接将实体类、实体对象存入表格结构当中。
  Windows Azure Table和SQL Server/SQL Azure的区别在于,Windows Azure Table是一种服务,旨在存储具有实体关系的数据,而不是关系数据库。Windows Azure Table 提供轻便快捷低成本的大规模存储数据,包含实体和属性。它不是关系数据库,所以不能提供类似SQL中joins的方法,也不能管理 foreign keys。事实上,一个单一的Windows Azure Table可以存储数十亿个实体,一个Windows Azure Table的大小能达到万亿字节,这是一个相当大的存储量。通过示例图3也可以说明这一点。
 

Windows Azure 存储服务的构成

  图3 development fabric


  (3)Windows Azure Queue
  Windows Azure Blob和Windows Azure Table都是用来存储和访问数据的。Windows Azure 提供了第三种存储服务——Windows Azure Queue,为异步工作提供分派消息服务,最常见的一个应用就是作为Worker Role实例和Web Role实例之间通讯的消息队列。有关Windows Azure Queue使用的示例我们将在应用场景来做描述。
  不管在Windows Azure Storage中是使用Blob、Queue还是Table来存储数据,为了保证数据的安全,微软云计算服务平台至少会在同一数据中心三个独立的容器中存储Blob,Table和Queue,Windows Azure基于地理位置的功能允许你将数据复制到多个微软数据中心,增强灾难恢复能力,提高特定地区的性能。
  Visual Studio环境下配置和使用开发存储
  安装了VS2008或VS2010、SQL Server 2005/2008/2008 R2后,再安装一个扩展的工具包就可以进行云应用的开发了,这个扩展工具包是:Windows Azure Tools for Microsoft Visual Studio 1.1,其下载的地址是:http://www.microsoft.com/downloads/details.aspx?familyid=5664019E-6860-4C33-9843-4EB40B297AB6&displaylang=en
  使用VS 2008 和VS2010开发云应用的过程没有本质区别,但是VS 2010提供了云应用的开发、调试、部署、管理的整套工具,如开发云计算的程序模式、开发云计算的资料模式、开发云计算的项目范本、离线测试云计算项目、云计算部署等等,这些功能都缩短了云应用的开发周期,因此我们将使用VS 2010来开发云应用。注意在开发云应用的过程中,需要安装SQL Server Express,如果没有安装,可以使用VS 2010的安装文件添加安装。
  除了上述安装,Visual Studio环境下使用Windows Azure Storage,还需要安装Windows Azure SDK,其下载地址是:http://www.microsoft.com/downloads/details.aspx?FamilyID=21910585-8693-4185-826e-e658535940aa&displaylang=en
  上面讲了Windows Azure Storage在Visual Studio下的开发环境,要想让Windows Azure Storage在云应用程序里“Run”起来还需要做以下几步工作:
  (1) 配置连接字符串:这个字符串指明了你的Windows Azure storage 账户。
  (2) 初始化Windows Azure Storage:设置项目的Start Development Storage Services属性为True,其方法是:右击项目|Properties,属性|Development tab,开发Tab|Start Development Storage Services。
  这些安装和配置完成后,我们就可以在程序里使用Windows Azure Managed Library和Windows Azure Storage Services REST API这两个类库来访问Windows Azure Storage。其中Windows Azure Managed Library包含的命名空间有:
  Microsoft.WindowsAzure
  Microsoft.WindowsAzure.ServiceRuntime
  Microsoft.WindowsAzure.Diagnostics
  Microsoft.WindowsAzure.Diagnostics.Management
  Microsoft.WindowsAzure.StorageClient
  Microsoft.WindowsAzure.StorageClient.Protocol
  Windows Azure Storage Services REST API提供了Blob Service API、Table Service API、Queue Service API。
  Windows Azure Storage应用场景
  在Windows Azure Storage应用场景里,我们更多是通过一些示例图或者实际应用的图来给大家介绍一些Windows Azure Storage的应用场景。
 

  图4 Table 、Queue和Blob的应用场景


  在如图4所示的应用场景中,用户通过Web Role实例访问Table里的数据,Web Role和Worker Role之间的消息传递是通过Queue来实现的,而Worker Role则访问了Blob里的大数据。
 

  图5 Queue和Blob的应用场景


  在图5所示的场景中,Web Role和Worker Role之间的消息传递是通过Queue来实现的,而Worker Role则访问了Blob里的大数据。
 

  图6 Table的应用场景


  在图6所示的应用场景中,用户通过Web Role实例访问Table里的数据。
  下面我们给出两个使用Blob和Table访问到的数据界面,如图7~8所示:
 

  图7 使用Blob
 

  在图7中,我们可以浏览到Blobs里存储的二进制数据,默认状态下,这些数据是只读的,可以在上面的搜索条里对数据进行查找,也可以对文件下载,这是不是类似于FTP呢?
 

  图8 使用Table
 

  在图8中,使用Table存储了数据,每一行都标示了一个实体,每一列都标示了实体的一个属性。从存储看上去还是和SQL Server的数据表很类似的。同样,可以对数据进行过滤,而且还可以对数据进行刷新。
  总结
  Windows Azure Platform支持三种可扩展的持久化存储:非结构化数据(Blob)、结构化数据(Table)、应用程序和服务之间,或应用程序与服务之间的消息(Queue)。再结合Visual Studio的开发环境和应用场景,加深了大家对Windows Azure 存储服务的理解。

热词搜索:

上一篇:国内厂商都可以提供哪些云存储服务?
下一篇:亚略特:密码中被忽略的IT内控漏洞

分享到: 收藏