Windows Azure Storage
云存储系统,提供给用户:
貌似无限容量的数据存储
貌似可保存任意长的时间
数据按副本存放
本地副本,容忍设备故障
广域副本,容忍地域灾难
强一致性(待看)
Azure存储系统的元素包括三种:
Blobs(即用户文件s)
Tables(即结构化存储)
Queues(即消息传递)
上述三种数据抽象提供了全部的存储以及工作流,可适用于多种应用
常见的用法:
通过Blob承载进出的数据
通过Queues提供处理Blob的工作流
通过Table和Blob保存中间服务状态和最终结果
承载的应用
社交网络搜索,视频、音乐、游戏内容服务,医疗记录管理等等
用户可以从因特网登录系统来使用存储
WORM
内外部用户的需求引导的设计决策
强一致性
有限制条件的读、写、删除,以提供对强一致性数据的最优并发控制
能够提供CAP三种属性
strongconsistency, high availability, and partition tolerance
全局且可扩展的名字空间
能够在全世界任何位置进行一致性的数据存储和访问
EB级以上数据容量
因广域副本而有灾备能力
多租户低成本存储
全局名字空间
http(s)://AccountName.<service>.core.windows.net/PartitionName/ObjectName
<service> 指定服务类型,可以是blob, table 或 queue
API:http://msdn.microsoft.com/en-us/library/dd179355.aspx
分成三个部分
AccountName:
DNS名称的一部分,AccountName的DNS翻译,用于定位数据所在的数据中心和primary存储集群。
Primary位置是该账户访问该数据的所有请求发往的位置,一个应用可以使用多个AccountName,以便将数据存放在不同位置。
PartitionName:
用于单一请求,定位该请求将到达的存储集群
可用来基于网路状况扩展性地进行数据访问
ObjectName
当PartitionName对应有多个object时,ObjectName指定具体object
对于在同一PartitionName内的object之间,系统支持原子性的事务
对应于数据抽象:
对于Bolb,其全名是PartitionName
对于Table,table内的每一项(即每一行)有一个主键,其由两部分组成:PartitionName和ObjectName。这样安排可以让应用能够将Table中的行分组,同一分组内可以进行原子性的事务
对于Queue,其名字是PartitionName,在一个Queue中的每个消息具有一个ObjectName用于识别该消息
Azure存储系统架构
云服务运行在广域多数据中心之上
Windows Azure Fabric Controller是资源分配和管理层,管理资源分配、部署、升级以及云服务的管理
Windows Azure Storage运行在Windows AzureFabric Controller之上
Fabric Controller为Windows AzureStorage提供节点管理、网络配置、状态监控、服务实例的启停、服务部署。
Windows Azure Storage从FabricController获取网络拓扑、集群物理分布、存储节点的硬件配置
Windows Azure Storage负责管理数据和副本的放置,数据和应用流量在存储集群内的负载均衡
Windows Azure Storage的架构组成
两部分:Storage Stamp和定位服务LS(Location Service)
Storage Stamp构成:
N个机柜(rack)(每个机柜包含多个存储节点(node))组成的一个集群。
每个机柜是一个错误隔离域,有冗余网络和电源。
一个Cluster通常有10到20个机柜,每个机柜18个存储节点(磁盘阵列)
目前单个Storage Stamp容量2PB;下一代的单个容量达30PB
Storage Stamp利用率考虑
目标是保持70%的容量、处理、带宽的利用率
避免超过80%,原因:
(1)减少寻道开销、尽量利用外磁道来获得更好的响应和吞吐量
(2)当一个机柜故障时,保持Stamp的可用性
当一个存储Stamp达到70%时,定位服务通过跨stamp的副本将账户迁移到其他的stamp。
定位服务Location Service
管理所有的Storage Stamp
管理涵盖全部Stamp的账户名字空间
管理账户定位到哪个Stamp,以提供容灾和负载均衡
自身在两地部署,容灾
Windows Azure Storage分为亚美欧三个地域,每个地域有多个地点,每个地点一个数据中心,每个中心放置在一到多个Building,每个地点有多个storagestamp
LS能灵活增加地域à地点àstamp
LS负责将账户导向给新加入的stamp
LS负责负载均衡
LS的运作机制:
应用申请一个新账户(指定了地点)àLS在该地点选取一个stamp(根据综合负载选择)àLS将此账户信息存放至此stamp(这就告诉了此stamp可以接收该账户的请求)àLS更新DNS,将请求导向该stamp的VIP(Virtual IP)。
Storage Stamp的三层结构
Stream Layer: