前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows Azure Storage 论文阅读

Windows Azure Storage 论文阅读

作者头像
大数据和云计算技术
发布2022-03-03 18:25:25
8450
发布2022-03-03 18:25:25
举报

最近读微软一篇比较早的论文,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 ,这样扩展性会更好一些。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据和云计算技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档