![3b53af95ba063f20584fea0565491987.png](https://img-blog.csdnimg.cn/img_convert/3b53af95ba063f20584fea0565491987.png)
写在前面
Windows AZure Storage(WAS)是微软向全球提供的商业存储平台,旨在为用户提供大容量、高可靠、高可用、强一致的存储服务,WAS存储数据中心分布在全球多地,使得用户数据得到最大限度的可靠性保障,WAS宣称其提供的服务满足CAP三个条件。
本文主要是结合AZure论文[1],分析其系统架构设计,水平有限,如有问题烦请指出。
AZure Storage设计要点
-
- 数据强一致性
强一致性特性使得用户使用更方便,不需要考虑数据不一致或者数据落后带来的影响,AZure在保证用户数据强一致的同时也能够保证用户在底层网络分区情况下的可用性,即同时满足了CAP三个要素。 - 可扩展全球命名空间
AZure面向全球提供存储服务,因此保证在任何地方访问数据的方式一致。所有的数据通过URI访问。形式如下:
http(s)://AccountName.<service>1.core.windows.net/PartitionName/ObjectName - 全球容灾
冗余是容灾的最直接方式,AZure在全球部署多个数据中心,保证在灾难发生时也能够恢复用户数据。 - 统一存储
基于相同的底层存储机制向上抽象多种存储服务,如对象存储、消息队列、表格存储等。
- 数据强一致性
AZure Storage架构设计
![a9eac4d38f9828c3803f62f47339b9af.png](https://img-blog.csdnimg.cn/img_convert/a9eac4d38f9828c3803f62f47339b9af.png)
从AZure的架构设计可以看出它是一个多层结构,每一层各司其职,每一层看到的最小逻辑单位不一样,所以处理的粒度就不一样,通过多层结构从下到上层层抽象,使得基于相同的底层基础组件向上提供不同类型的存储服务,比如表格存储、消息队列或者对象存储等。
上图中从宏观上列出了WAS的几大组件:
-
- Location Service
Location Service用于管理Storage Stamp,在Storage Stamp之间进行容灾恢复和负载均衡,并且负责全局命名空间管理。
WAS的数据中心遍布在北美、欧洲、亚洲,LS管理这些数据中心,同时也负责将用户的请求分发到距离其最近的数据中心。 - Storage Stamp
Storage Stamp是由一组机架组成的存储集群,每个rack是一个故障隔离域,配备网络及电力冗余。
Storage Stamp内部自下到上分为三层,接收用户请求并进行数据复制,从下到上分别为stream layer、partition layer、front end。- stream layer
这层其实是一个完整的分布式文件系统,管理底层存储设备,WAS底层数据复制及调度以extent为单位。向上为partition layer提供接口,stream layer只提供append接口,不支持overwrite in place。 - partition layer
partition layer主要负责向上抽象不同的存储服务,比如消息队列、对象存储等,且这种存储服务抽象是对底层stream layer透明的。
- stream layer
- Location Service