Windows Azure Storage (1) Windows Azure Storage Service存储服务

时间:2022-06-21 16:34:09

  Windows Azure Platform 系列文章目录

   

  如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azure China Storage Account

 

  update 2014-3-31

  Windows Azure Storage带宽10GB,WindowsAzure Blob带宽60MB

 

 

  Windows Azure PaaS本质上来说就是将你本地的应用程序打包,然后上传到Windows Azure VM进行托管运行。

  注意:任何保存在Windows Azure PaaS盘符的内容都是临时的、非持久化的。比如,我通过Windows Azure
VM在D盘新建了一个txt文件,这个文件不会一直被保存。因为某些特殊情况,VM节点会宕机(系统升级、物理损坏)等,后台Fabric Controller会把该VM下的Web Role和Worker Role的内容迁移到同一数据中心的另外一台机器上,但是不会自动迁移D盘新建的txt文件!如果需要保存持久化的内容,一定要使用Windows Azure Storage,切记切记!

  Windows Azure Storage是支持三重冗余的,也就是说,保存在Azure Storage的内容,会在同一个数据中心保留有3个副本。这样的好处显而易见:当数据中心发生一般性故障的时候,比如磁盘损坏,机架服务器损坏等,用户保存在Azure Storage的数据不会丢失。每次对于Storage的写操作,都会对三个副本进行同步写操作,等到在副本操作完毕之后,才会返回执行成功给客户端。

  Windows Azure提供了三种不同类型的存储服务(这里的存储是非关系型数据,比如图片、文档等文件),用来提供给Windows Azure上运行的应用程序存储数据使用。依据不同的存储格式会有不同的限制,因为这些存储服务都是以分散式巨量存储(Distributed Mass Storage)为核心概念所设计出来的,为了要达成快速在分散式存储空间中存储与管理数据(还包含高可用度的赘余存储管理),微软有在数据的存储上做一些限制。

  微软还提供了REST API来方便用户操作Storage Service。

  Windows Azure Storage (1) Windows Azure Storage Service存储服务

 

1.BLOB

BLOB(大型二进制对象)数据是用来存储文件、图片、文档等二进制格式的文件。

BLOB分为2种:

  -Block BLOB(区块型BLOB存储),这类的存储以4M为一个区块单位,单一文件最大可以存储200GB,且区块不会连续存储,可能会在不同的存储服务器分块存放。为了适应文件的上传和下载而专门进行了优化。当应用程序要求时,会一招文件的KEY以及区块存储区提供数据。

  -Page BLOB,是优化的随机访问。它会在存储区中划分一个连续的区域供应用程序存放数据,它本身可以视为一个大型的VHD(虚拟机软盘)。如果我们拿我们的应用程序迁移到Windows Azure平台上,对于文件的读写操作可能需要进行一些修改,但是通过Page Blob就可以方便我们迁移:微软特别在Page BLOB上提供了一组将Page BLOB虚拟成软盘的功能,称为Windows Azure Drive(研发代号为XDrive),它能够支持NTFS API,也就是说应用程序可以利用现有的文件管理API(包含System.IO的类型)来访问Windows Azure Drive中的文件夹与文件数据,并且这些数据会保存在Windows Azure数据中心内。

 

  Block Blob和Page Blob的区别,请参考Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob

 

BLOB服务由BLOB本身以及其收纳容器(Container)构成,容器可视为一般本机上的文件夹。

你可以通过REST API来访问,如下:

http://accountName.blob.core.windows.net/<containerName>/<blobName>

accountName表示哪个Azure帐号(Account)下的资源。

blob.core.windows.net表示我访问的是blob的资源。

containerName表示容器的名字,可以认为是访问某一文件夹下的资源

blobName表示我要访问的资源的名字。

 

 

ContainerName容器,从概念上来将类似于文件夹

Container类型分为三种: Public Container,Public Blob和Private

 

Private(私有)表示,这个Container(文件夹)里面的内容,都不允许匿名访问

比如 http:/mystorage.blob.core.chinacloudapi.cn/privatephotos/1.jpg
上面的container name是privatephotos,类型是私有(private)
所以不允许匿名文档,这也是为什么你之前上传的资源无法通过IE匿名访问
对于某些私密的信息,比如内部的图片、文件,可以设置private类型

 

公共blob,表示允许访问这个某一个资源,但是无法递归访问这个container (文件夹)
对于可以匿名访问资源,比如公共图片、照片,可以设置公共blob

 

公共容器(container),表示可以递归访问这个container(文件夹)下的所有资源

 

 

注意:ContainerName的命名规则

1.必须以英文或数字开头,且名称内只能有英文、数字及dash(-)

2.不能以dash(-)开头或结尾,dash(-)不能连续出现

3.所有英文的字符都必须是小写

4.长度为3-63之间

 

Blob的命名规则:

1.除了URL的保留字符以外,其他的字符组合都可以使用

2.长度为1-1024个字符

3.尽量避免以dot(.)或者是forward slash(/)结尾。否则会造成Blob Service误判。

 

Windows Azure Storage (1) Windows Azure Storage Service存储服务

 

 2.Table

这里的Azure Table是非关系型数据库的表,不能与SQL Server中的Table混淆。

Azure Table中表最大容量是200T,每个Azure Table 都必须有Partition Key和Row Key。

Partition Key的值可以设置记录的物理位置。在Azure Table中的2条数据,如果Partition Key值相同,则表示这2条数据存储的物理位置是相同的;如果Partition Kay不同,则表示这2条数据可能存储在同一台物理介质上,或者不同的2台物理介质之上。

Row Key表示一行数据的唯一值。使用PartitionKey和RowKey可以定位一个唯一的实体。

Azure Table也提供REST API来访问,如下:

http://accountName.table.core.windows.net/<TableName>

 

Windows Azure Storage (1) Windows Azure Storage Service存储服务

 

3.Queue

Queue(队列)是一种先到先服务(First-Come, First-Serve),或称为FIFO(先入先出)的存储服务,它可以允许应用程序将消息存储到队列中排队,然后由负责处理的应用程序(通常是Worker)由队列提取消息并处理以后,将消息由队列中移除。消息可以是字符串或是最长8KB的二进制数据,队列经常会作为跨运行个体通信以及工作切割通知的消息传递之用。

Queue消息队列的每个消息(Message)最大支持64K,Queue最大容量200TB

http://<account>.queue.core.windows.net/<QueueName>

Windows Azure Storage (1) Windows Azure Storage Service存储服务