zoukankan      html  css  js  c++  java
  • Windows Azure Storage (1) Windows Azure Storage Service存储服务

      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。

      

    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误判。

     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>

    3.Queue

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

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

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

  • 相关阅读:
    【已解决】github中git push origin master出错:error: failed to push some refs to
    好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
    THINKPHP 5.0目录结构
    thinkphp5.0入口文件
    thinkphp5.0 生命周期
    thinkphp5.0 架构
    Django template
    Django queryset
    Django model
    Python unittest
  • 原文地址:https://www.cnblogs.com/threestone/p/2325567.html
Copyright © 2011-2022 走看看