6.3 Windows Azure Storage

Windows Azure Storage(WAS)是微软开发的云存储系统,包括三种数据存储服务:Windows Azure Blob、Windows Azure Table、Windows Azure Queue。三种数据存储服务共享一套底层架构,在微软内部广泛用于社会化网络、视频、游戏、Bing搜索等业务。另外,在微软外部也有成千上万个云存储客户。

6.3.1 整体架构

WAS部署在不同地域的多个数据中心,依赖底层的Windows Azure结构控制器(Fabric Controller)管理硬件资源。结构控制器的功能包括节点管理,网络配置,健康检查,服务启动,关闭,部署和升级。另外,WAS还通过请求结构控制器获取网络拓扑信息,集群物理部署以及存储节点硬件配置信息。

如图6-10所示,WAS主要分为两个部分:定位服务(Location Service,LS)和存储区(Storage Stamp)。

6.3 Windows Azure Storage - 图1

图 6-10 Azure storage整体架构

●定位服务的功能包括:管理所有的存储区,管理用户到存储区之间的映射关系,收集存储区的负载信息,分配新用户到负载较轻的存储区。LS服务自身也分布在两个不同的地域以实现高可用。LS需要通过DNS服务来使得每个账户的请求定位到所属存储区。

●每个存储区是一个集群,一般由10~20个机架组成,每个机架有18个存储节点,提供大约2PB存储容量。下一步的计划是扩大存储区规模,使得每个存储区能够容纳30PB原始数据。存储区分为三层:文件流层(Stream Layer)、分区层(Partition Layer)以及前端层(Front-End Layer)。

●文件流层:与Google GFS类似,提供分布式文件存储。WAS中文件称为流(streams),文件中的Chunk称为范围(extent)。文件流层一般不直接对外服务,需要通过服务分区层访问。

●分区层:与Google Bigtable类似,将对象划分到不同的分区以被不同的分区服务器(Partition Server)服务,分区服务器将对象持久化到文件流层。

●前端层:前端层包括一系列无状态的Web服务器,这些Web服务器完成权限验证等功能并根据请求的分区名(Partition Name)将请求转发到不同的分区服务器。分区映射表(Partition Map)用来决定应该将请求转化到哪个分区服务器,前端服务器一般缓存了此表从而减少一次网络请求。

另外,WAS包含两种复制方式:

●存储区内复制(Intra-Stamp Replication):文件流层实现,同一个extent的多个副本之间的复制模式为强同步,每个成功的写操作必须保证所有副本都同步成功,用来实现强一致性。

●跨存储区复制(Inter-Stamp Replication):服务分区层实现,通过后台线程异步复制到不同的存储区,用来实现异地容灾。