最近读微软一篇比较早的论文,Windows Azure Storage:A Highly Available Cloud Storage Service with Strong Consistency(一个带强一致性能力的高可用云存储服务。)

windows azure storag 后面简称 WAS。WAS 支持多模存储,包括 Blobs(用户文件)、Tables(结构化数据)、Queues(消息传输)。

一、下面是 WAS 的架构,主要分三层:

从下到上分别讲:

1、Stream Layer:

这一层负责实际的数据存储在硬盘上的工作,包括在多个storage stamp 内部 服务器之间数据复制。有点类似一个文件系统层。这个类似文件系统的称为:steam(内部带顺序的存储块叫 extents),负责管理怎么粗才能,怎么负责等事情,但是不管上层的对象或者语义。数据存在这一层,被上层的 partition layer 访问。在同一个 storage stamp 里面,stream layer 和 partition layer 一起协作。

这里要提一下 storage stamps,指的是存储集群,包括N 架存储节点,其中每个机架都有冗余的网络和能源用来故障冗余。

每个 stream 在分层命名空间中都有一个名称在流层维护,流看起来像一个大文件分区层。

stream layer 的唯一客户端是 partition layer,分区层和流层是共同设计的,在单个 storage stamp 中,它们将不使用超过 5000 万个extents和不超过 100,000 streams。因此SM 节点可以用32GB 内存轻松地存下这些对象的元数据。

2、partition layer

分区层是为管理而构建的并理解更高级别的数据抽象(Blob、Table、Queue),提供可扩展的对象名称空间,提供对象的事务排序和强一致性,存储管理 stream layer之上的对象数据,以及缓存对象数据以减少磁盘 I/O。

该层的另一个职责是通过分区存储数据到 data stamp 里面来实现扩展。所有对象都有一个 PartitionName;对象通过 PartitionName 来进行分区,分布到不同的服务器上。

上层 Bolb、table 和 queue通过 PartitionName 分布在不同的服务上。另外,这一层还负责自动负载均衡来满足不同对象的访问要求。

Partition Layer存储不同类型的对象和了解事务对于给定对象类型的意义(Blob、tables 、queues)。

3、Front-End (FE) layer

前端 (FE) 层由一组接受传入请求的无状态服务器。收到请求,FE 查找 AccountName,对请求进行身份验证和授权,然后将请求路由到partition layer中的分区服务器(基于分区名)。系统维护一个分区图,保存跟踪 PartitionName 范围以及哪个分区服务器是服务哪个 PartitionNames。FE 服务器缓存分区映射并使用它来确定要转发的分区服务器每个请求。FE 服务器还直接流式传输大型对象从流层和缓存经常访问的数据效率。

二、为什么分开 Stream Layer 和partition layer 复制逻辑?

stamp 内部复制,这是由 stream layer 来负责,它在不同节点上保留足够的数据副本不同的故障域保持数据在标记内的持久性,解决磁盘、节点和机架故障问题。stamp 内复制完全由 stream layer 完成,这个内部复制主要是了针对硬件故障的持久性,这在大规模系统中经常发生,而在stamp 间复制提供了地理冗余以应对罕见的地理灾害。

跨 stamp 复制,这个是 partition layer 来完成,这一层提供跨 stamp 异步复制。这一层故障是比较少的。

创建这两个单独的复制层的另一个原因是这两层中的每一层都必须维护的命名空间。

partition layer 里面的RangePartition 使用 Log-Structured Merge-Tree 来维护其持久数据,如下图所示。每个对象表的 RangePartition由它自己的stream layer中的一组 stream 组成,并且stream 仅属于给定的 RangePartition,尽管底层范围可以由多个 stream 指向.由于 RangePartition 拆分而导致的不同 RangePartition。这以下是组成每个 RangePartition 是由一系列 stream 组成:

三、小结:

这个架构有点类似 HBase,最大的亮点是 stream layer 不是一个全局的,不是类似 HDFS ,这样扩展性会更好一些。

Windows Azure Storage 论文阅读相关推荐

  1. Windows Azure Storage论文解读

    Windows Azure Storage论文解读 整体架构 文件流层 stream layer 存储引擎 存储优化 分区层 Partition Layer 存储引擎 WAS总结 WAS是微软开发的云 ...

  2. Windows Azure Storage – 4万亿对象和计数

    Window Azure Storage有着惊人增长的一年.我们拥有超过4万亿的存储对象,每秒处理着270,000个请求,顶峰时达到每秒880000个请求. 大约一年前,我们达到了一万亿的目标.然后在 ...

  3. Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob

    <Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...

  4. Windows Azure Storage浏览器

    我们不时被问到Windows Azure Storage有哪些工具可用,所以我们决定把我们知道的存储浏览器做成列表供大家参考.这些Windows Azure Storage浏览器都可以用来查看blob ...

  5. Windows Azure Storage (4) Windows Azure Storage Service存储服务之Blob Share Access Signature

    <Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...

  6. Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)

    <Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...

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

    <Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...

  8. Windows Azure Platform (九) Windows Azure Storage Service存储服务

    Windows Azure本质上来说就是将你本地的应用程序打包,然后上传到Windows Azure VM进行托管运行. 注意:任何保存在Windows Azure VM盘符的内容都是临时的.非持久化 ...

  9. Windows Azure Storage (25) Azure Append Blob

    <Windows Azure Platform 系列文章目录> 在笔者之前的文章中,我们介绍了Azure Blob 有两种:Block Blob和Page Blob. 在这里笔者介绍Blo ...

最新文章

  1. Java创建初始化List集合的几种方式
  2. Linux的SERVER_NAME 和HTTP_HOST
  3. 自动处理键盘事件的第三方库 IQKeyboardManager
  4. java 调用tomcat api,Tomcat采用双向认证https协议通过JavaAPI调用(一)配置SSL
  5. android浏览SD卡的文件,简单实现浏览Android SD卡中的文件
  6. 程序员看的JPEG图像压缩介绍(多图慎入)
  7. 深度学习笔记(30) Inception网络
  8. 万物联网IoE与物联网IOT有何差别?
  9. 互联网科普-淘宝与天猫的对标
  10. 简账(开源记账软件)-后端环境简介及部署
  11. vrchat模型保存_VRChat简易教程3-往世界里导入模型和VRC接口初探
  12. 嵌入式Linux应用开发
  13. JavaScript打开新页面的两种方式:当前页面打开和新页面跳转
  14. [全国十大城市火车票售票点、订票电话(买票再也不用去火车站排队)] – [旅游] – [校内论坛]
  15. oppo X907刷机包 COLOROS 1.0 正式版发布 安卓4.2.2
  16. Flask 中 AssertionError: View function mapping is overwriting an existing endpoint function: decorate
  17. 一次由于SQL Server BUG引起的数据库AlwaysOn主从切换故障分析处理
  18. 【报错】python编码问题:UnicodeDecodeError:‘utf-8‘codec can‘t decode byte 0xce in position 52: invalid contin
  19. 关于产品的一些思考——搜狐之搜狗输入法(手机版)
  20. IDS反病毒与APT的具体介绍

热门文章

  1. 机器学习中踩过的坑,如何让你变得更专业?
  2. 基于cocos2dx的横版动作游戏制作(二)
  3. Java实现 对ip白名单的限制
  4. php模式设计之 适配器模式
  5. 江苏2021高考成绩查询全省排名,2021江苏高考成绩排名顺序查询,江苏省高考全省排名怎么查...
  6. HDU2550 百步穿杨
  7. ubuntu16.04不能访问新加卷
  8. 公式宝典之颜色混合模式公式
  9. Virtualbox 设置共享文件夹
  10. 迷阵突围——Dijkstra求次短路