主要分布式文件系统架构对比分析:GFS vs. Tectonic vs. JuiceFS

随着技术的进步和数据的不断爆炸,传统的磁盘文件系统已经暴露出它们的局限性。为了满足不断增长的存储需求,分布式文件系统作为动态且可扩展的解决方案应运而生。在本文中,我们探讨了三种代表性分布式文件系统的设计原则、创新和解决的挑战:Google 文件系统 (GFS)、Tectonic和JuiceFS。

GFS 开创了商品硬件的使用,并影响了大数据领域的 Hadoop 分布式文件系统 (HDFS) 等系统。

Tectonic 引入了分层元数据和存储/计算分离,提高了可扩展性和性能。

JuiceFS 专为云原生时代而设计,使用对象存储和多功能元数据引擎在云中实现可扩展的文件存储。

通过探索这三个系统的架构,您将获得设计分布式文件系统的宝贵见解。这种认识可以指导企业选择合适的文件系统。我们的目标是激励大数据、分布式系统设计和云原生技术领域的专业人士和研究人员了解优化数据存储、了解行业趋势并探索实际应用。

流行的分布式文件系统概述

下表显示了各种广泛使用的分布式文件系统,包括开源的和专有的。

广泛使用的分布式文件系统

如表所示,大量的分布式系统在2000年左右出现。在此之前,共享存储、并行文件系统和分布式文件系统已经存在,但它们往往依赖于专门且昂贵的硬件。

表中的“POSIX兼容”列表示分布式文件系统与可移植操作系统接口(POSIX)的兼容性,POSIX是操作系统实现的一组标准,包括文件系统相关的标准。兼容 POSIX 的文件系统必须满足标准中定义的所有功能,而不仅仅是少数功能。

例如,GFS 不是 POSIX 兼容的文件系统。Google 在设计 GFS 时做了一些权衡。它抛弃了很多磁盘文件系统的特性,保留了当时谷歌搜索引擎所需的一些分布式存储需求。

在接下来的章节中,我们将重点介绍 GFS、Tectonic 和 JuiceFS 的架构设计。让我们探讨每个系统的贡献以及它们如何改变我们处理数据的方式。

GFS架构

2003年,Google发表了GFS论文。它证明了我们可以使用经济高效的商用计算机来构建功能强大、可扩展且可靠的完全基于软件的分布式存储系统,而无需依赖专有或昂贵的硬件资源。

GFS 显着降低了分布式文件系统的进入门槛。它对许多后续系统都有不同程度的影响。HDFS是雅虎开发的开源分布式文件系统,深受GFS论文中提出的设计原则和思想的影响。它已成为大数据领域最流行的存储系统之一。尽管 GFS 于 2003 年发布,但其设计至今仍然具有相关性并被广泛使用。

GFS架构如下图所示:

GFS 集群由以下部分组成:

  • Master,充当元数据节点。

  • 为了维护文件系统的目录、权限和属性等元数据,需要使用中央节点(主节点)。大师采用树状设计结构。

  • 多个存储数据的块服务器。

  • chunkserver依赖本地操作系统的文件系统来存储数据。

  • 多个客户

master和chunkserver之间的通信是通过网络进行的,从而形成分布式文件系统。块服务器可以随着数据的增长而水平扩展。所有组件在 GFS 中互连。当客户端发起请求时,首先从Master上获取文件元数据信息,并与ChunkServer进行通信,最终获取数据。GFS 将文件存储在固定大小的块中,通常为 64 MB,并具有多个副本以确保数据可靠性。因此,读取同一个文件可能需要与不同的 chunkserver 进行通信。副本机制是分布式文件系统的经典设计,当今许多开源分布式系统实现都受到GFS的影响。

虽然 GFS 本身具有开创性,但它在可扩展性方面存在局限性。为了解决这些问题,Google 开发了Colossus作为 GFS 的改进版本。Colossus 为各种 Google 产品提供存储,并作为 Google Cloud 服务的底层存储平台,使其公开可用。Colossus 具有增强的可扩展性和可用性,旨在满足现代应用程序快速增长的数据需求。

构造结构

Tectonic 是 Meta(以前的 Facebook)使用的最大的分布式文件系统。这个项目最初被称为 Warm Storage,于 2014 年开始,但其完整架构直到 2021 年才公开发布。

在开发 Tectonic 之前,Meta 主要使用 HDFS、Haystack 和 f4 进行数据存储:

  • HDFS用于数据仓库场景(受限于单个集群存储容量,部署了几十个集群)。

  • Haystack和f4用于非结构化数据存储场景。

Tectonic 旨在在单个集群中支持这三种存储场景。

下图展示了 Tectonic 架构:

构造由三个部分组成:

  1. 客户库

  2. 元数据存储

  3. 大块商店

构造层位设计

构造建筑设计的创新

创新一:分层元数据

Tectonic 将分布式文件系统的元数据抽象为简单的键值(KV)模型。这样可以实现出色的水平扩展和负载平衡,并有效防止数据访问中的热点。Tectonic 引入了元数据的分层方法,使其有别于传统的分布式文件系统。Metadata Store分为三层,对应底层KV存储中的数据结构:

  • Name层存储与文件名或目录结构相关的元数据,按目录ID进行分片。

  • 文件层存储文件属性,按文件ID进行分片。

  • 块层存储有关数据块在块存储中的位置的元数据,并按块 ID 进行分片。

下图总结了三层的键值映射:

Tectonic 中的图层映射

这种分层设计解决了 Tectonic 的可扩展性和性能需求,特别是在 Meta 需要处理 EB 级数据的场景中。

创新二:元数据存储与计算分离

这三个元数据层是无状态的,可以根据工作负载进行水平扩展。它们通过网络与键值存储(元数据存储中的状态存储)进行通信。

Key-Value Store 并非由 Tectonic 团队单独开发;相反,他们使用 ZippyDB,Meta 中的分布式 KV 存储系统。ZippyDB 建立在 RocksDB 和 Paxos 共识算法之上。Tectonic 依靠 ZippyDB 的 KV 存储及其事务来确保文件系统元数据的一致性和原子性。

事务功能在实现大规模分布式文件系统中起着至关重要的作用。水平扩展元数据存储以满足此类系统的需求至关重要。然而,水平扩展引入了数据分片的挑战。保持强一致性是文件系统设计中的关键要求,尤其是在执行重命名具有多个子目录的目录等操作时。确保整个重命名过程的效率和一致性是分布式文件系统设计中一个重大且广泛认可的挑战。

为了应对这一挑战,Tectonic 使用 ZippyDB 的事务功能。在处理单个分片内的元数据操作时,Tectonic 保证了事务行为和强一致性。

但是,ZippyDB 不支持跨分片事务。这限制了 Tectonic 在处理跨多个目录的元数据请求(例如在目录之间移动文件)时确保原子性的能力。

创新三:块存储中的纠删码

如前所述,GFS通过多副本保证数据的可靠性和安全性,但这种方式的存储成本较高。例如,仅存储 1 TB 数据通常需要三个副本,从而产生至少 3 TB 的存储空间。对于像 Meta 这样以 EB 级别运行的大型系统,这种成本会显着增加。

为了解决这个问题,Meta 在 Chunk Store 中实现了纠删码(EC),通过减少冗余来实现数据的可靠性和安全性,通常约为原始数据大小的 1.2 至 1.5 倍。与传统的三副本方法相比,这种方法可以节省大量成本。Tectonic 的 EC 设计提供了灵活性,允许按块进行配置。

虽然EC以最小的存储空间有效地保证了数据的可靠性,但它也存在一些缺陷。具体来说,重建丢失或损坏的数据会产生较高的计算和 I/O 资源要求。

根据 Tectonic研究论文,Meta 中最大的 Tectonic 集群由大约 4,000 个存储节点组成,总容量约为 1,590 PB,相当于 100 亿个文件。这个规模对于分布式文件系统来说是相当大的,通常可以满足目前大多数用例的要求。

JuiceFS 架构

JuiceFS诞生于2017年,与GFS和Tectonic的出现相比,外部格局发生了重大变化:

硬件资源有了显着进步。相比之下,当时谷歌数据中心的网络带宽仅为100Mbps。如今,在 AWS 上,机器网络带宽最高可达 100 Gbps,提升了千倍。

云计算已成为主流,企业通过公有云、私有云或混合云过渡到“云时代”。这种转变给基础设施架构带来了新的挑战。将针对 IDC 环境设计的传统基础设施迁移到云端常常会带来各种问题。最大限度地发挥云计算的优势成为将基础设施无缝集成到云环境中的关键要求。

此外,GFS 和 Tectonic 是为特定公司运营服务的内部系统,运营规模较大,但关注范围较窄。相比之下,JuiceFS 旨在满足广泛的面向公众的用户并满足不同的用例需求。因此,JuiceFS 的架构与其他两种文件系统有很大不同。

考虑到这些变化和区别,我们来看下图所示的 JuiceFS 架构:

JuiceFS 由三个组件组成:

  1. 元数据引擎

  2. 数据存储

  3. 客户端

虽然 JuiceFS 与上述系统共享相似的整体框架,但它通过各种设计方面脱颖而出。

数据存储

与GFS和Tectonic依赖专有数据存储不同,JuiceFS通过使用对象存储来顺应云原生时代的趋势。如前所述,Meta 的 Tectonic 集群使用 4,000 多台服务器来处理 EB 级数据。这不可避免地会导致管理如此大规模的存储集群的巨大运营成本。

对于普通用户来说,对象存储有几个优点:

  • 开箱即用的可用性

  • 弹性容量

  • 简化操作和维护

  • 支持纠删码,与复制相比,存储成本更低。

然而,对象存储也有局限性,包括:

  • 对象不变性

  • 元数据性能不佳

  • 缺乏强一致性

  • 随机读取性能有限

为了应对这些挑战,JuiceFS在架构设计上采取了以下策略:

  • 独立的元数据引擎

  • 由块、片和块组成的三层数据架构。

  • 多级缓存

元数据引擎

JuiceFS 支持各种开源数据库作为元数据的底层存储。这与 Tectonic 类似,但 JuiceFS 更进一步,不仅支持分布式 KV 存储,还支持 Redis、关系数据库和其他存储引擎。这种设计有以下优点:

  • 它允许用户为他们的特定用例选择最合适的解决方案,这符合 JuiceFS 成为多功能文件系统的目标。

  • 开源数据库通常在公共云中提供完全托管的服务,从而使用户的运营成本几乎为零。

Tectonic 通过使用事务性 KV 存储 ZippyDB 实现了强大的元数据一致性。然而,它的事务性仅限于单个分片内的元数据操作。相比之下,JuiceFS 对事务性的要求更加严格,要求跨分片的全局强一致性。因此,所有集成为元数据引擎的受支持数据库都必须支持事务。借助TiKV等可水平扩展的元数据引擎,JuiceFS 现在可以在单个文件系统中存储超过 200 亿个文件,满足海量数据企业的存储需求。此功能使 JuiceFS 成为处理海量数据存储需求的企业的理想选择。

客户

JuiceFS客户端与其他两个系统的客户端主要区别如下:

  • GFS 客户端采用非标准协议,不支持 POSIX 标准。它只允许仅追加写入。这限制了其在特定场景中的可用性。

  • Tectonic 客户端也缺乏对 POSIX 的支持,并且只允许仅附加写入,但它采用了丰富的客户端设计,在客户端整合了许多功能,以实现最大的灵活性。

  • JuiceFS 客户端支持多种标准访问方式,包括 POSIX、HDFS、S3、WebDAV、Kubernetes CSI。

  • JuiceFS客户端还提供缓存加速功能,这对于云原生架构中的存储分离场景非常有价值。

结论

分布式文件系统已经改变了数据存储,三个著名的系统在这个领域脱颖而出:GFS、Tectonic 和 JuiceFS。

  • GFS 展示了经济高效的商用计算机在构建可靠的分布式存储系统方面的潜力。它为后续系统铺平了道路,并在塑造该领域发挥了重要作用。

  • Tectonic 引入了创新的设计原则,例如分层元数据以及存储和计算的分离。这些进步解决了可扩展性和性能挑战,提供了元数据操作的效率、负载平衡和强一致性。

  • JuiceFS 专为云原生时代而设计,使用对象存储和多功能元数据引擎来提供可扩展的文件存储解决方案。JuiceFS 支持各种开源数据库和标准访问方法,可满足广泛的用例并与云环境无缝集成。

分布式文件系统克服了传统的磁盘限制,为管理大数据量提供了灵活性、可靠性和效率。随着技术进步和数据呈指数级增长,它们的持续发展反映了行业对高效数据管理的承诺。分布式文件系统凭借多样化的架构和创新功能,推动了跨行业的创新。


作者:Changjian Gao

更多技术干货请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。

irds.cn,多数据库管理平台(私有云)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/180879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SEO工具-免费功能最全的5款SEO工具

随着互联网的蓬勃发展,搜索引擎优化(SEO)已经成为许多企业和个人网站必备的关键技能。然而,对于初学者或者运营小型网站的人来说,使用专业的SEO工具可能涉及较高的成本。在这篇文章中,我们将向您推荐五款高…

西南科技大学模拟电子技术实验二(二极管特性测试及其应用电路)预习报告

目录 一、计算/设计过程 二、画出并填写实验指导书上的预表 三、画出并填写实验指导书上的虚表 四、粘贴原理仿真、工程仿真截图 一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入…

基于单片机的烟雾检测报警装置(论文+源码)

1.系统设计 (1)利用传感器实现环境中温度、烟雾浓度的实时检测; (2)系统检测的各项数据信息通过液晶模块进行显示,提高设计可视化; (3)系统可以根据实际情况利用按键模…

Mysql单表查询练习

一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker (部门号 int(11) NOT NULL,职工号 int(11) NOT NULL,工作时间 date NOT NULL,工资 float(8,2) NOT NULL,政治面貌 varchar(10…

双十二有什么好物是值得推荐?智能家居好物推荐

都知十一月份跟十二月份都有两个大促的时间,那就是双十一跟双十二,距离双十一过去已经半个月了,是不是还有很多朋友在双十一的时候也没有买尽兴,别慌!错过了双十一咱还有双十二,双十二的优惠力度也不会低于…

短视频账号矩阵系统源码/saas独立源头技术开发

一、批量剪辑(采用php语言,数学建模) 短视频合成批量剪辑的算法主要有以下几种: 1. 帧间插值算法:通过对多个视频的帧进行插帧处理,从而合成一段平滑的短视频。 2. 特征提取算法:提取多个视频中…

【开发实践】使用POI实现导出带有复杂表头的的excel文件

一、需求分析 公司业务部门需要&#xff0c;根据一些数据&#xff0c;加上表头&#xff0c;导出需要的excel表格。效果如下&#xff1a; 二、代码实现 【依赖准备】 <!-- POI --><dependency><groupId>org.apache.poi</groupId><artifactId>po…

【esp32】可变时间的定时器中断的开启和关闭

前言 回忆若能下酒&#xff0c;往事便可作一场宿醉。醒来时&#xff0c;天依旧清亮&#xff0c;风仍然分明&#xff0c;而光阴的两岸&#xff0c;终究无法以一苇杭之。我知你心意。无须更多言语&#xff0c;我必与你相忘于江湖&#xff0c;以沧桑为饮&#xff0c;年华果腹&…

倾斜摄影三维模型的根节点合并的轻量化技术方法分析

倾斜摄影三维模型的根节点合并的轻量化技术方法分析 倾斜摄影三维模型的根节点合并是一种轻量化技术&#xff0c;旨在减小模型数据的大小&#xff0c;提高渲染效率和加载速度。在本文中&#xff0c;我们将探讨关于倾斜摄影三维模型根节点合并的轻量化技术方法。 1、LOD&#x…

SpringBoot+网易邮箱登录注册

文章目录 SpringBoot网易邮箱登录注册pom.xmlapplication.ymlsqlUserEmail.javaUserEmailMapper.javaUserEmailMapper.xmlEmailService.javaUserEmailService.javaUserEmailServiceImpl.javaUserEmailController.javaregister1.html 编写前参考 SpringBoot网易邮箱登录注册 po…

PPSSPP (PSP游戏模拟器)最新版安装使用教程

PPSSPP优势 1、目前唯一的也是最好的psp模拟器 可运行绝大多数psp游戏且运行高速&#xff0c;即使是低配手机也能游玩经典大作。 2、支持自定义调节虚拟手柄和实体手柄连接 ppsspp模拟器支持使用虚拟手柄或者连接实体手柄游玩&#xff0c;同时还可以自定义调节按键选项。 …

使用Git客户端向gitee免密推送项目代码(保姆级流程哦)

1.进入Git官网手动下载git的客户端可执行程序 一路next即可 2.找到安装路径下的3.进入git-bash 根据如下的代码一次执行只需要修改对应的username和自己再gitee中绑定的邮箱 4.分发私钥到邮箱 产生私钥的时候回车三次即可&#xff1b;查看私钥如下图及正常&#xff1b; 5.进…

文生图领域经典-ControlNet介绍

引言 2023年的计算机视觉领域顶级学术会议ICCV上&#xff0c;一篇颠覆文生图AI领域的论文《Adding Conditional Control to Text-to-Image Diffusion Models》——ControlNet 荣膺最佳论文奖(Marr奖)。 自开源以来&#xff0c;ControlNet已经在GitHub上揽获25k星。无论是对扩…

vue项目多个不同的服务器请求地址管理

vue项目多个不同的服务器请求地址管理 在vue项目开发过程中&#xff0c;获取不同的数据可能会出现需要请求多个不同服务器地址的域名&#xff0c;这个时候需要对不同域名的请求地址进行管理以及跨域的代理。 一、单服务器域名地址的跨域代理和请求配置&#xff1a; 跨域配置&…

C#:程序发布的大小控制

.net不讨喜有个大原因就是.net平台本身太大了&#xff0c;不同版本没有兼容性&#xff0c;程序依赖哪个版本用户就要安装哪个版本&#xff0c;除非你恰好用的是操作系统默认安装的版本——问题是不同版本操作系统默认安装的不一样。 所以打包程序就很头疼&#xff0c;不打包平台…

深度解读:为什么要做数据合规?如何做到数据合规?

数据资源“入表”在即&#xff0c;企业更需筑牢数据合规防线。但企业主企业购买数据、获取数据到底是否合法合规&#xff0c;入表如何防范合规风险&#xff1f;上周三&#xff0c;亿信华辰邀请到北京鑫诺律师事务所高级合伙人、管委会副主任武婕将和大家分享《数据入表法律合规…

每天五分钟计算机视觉:经典架构的力量与启示

在深度学习和计算机视觉领域,卷积神经网络(Convolutional Neural Networks,简称CNN)无疑是最为经典的架构之一。近年来,随着研究的不断深入和新架构的不断涌现,许多初学者可能会忽视这些经典架构的重要性。然而,理解并学习这些经典架构,对于我们深入理解卷积神经网络的…

Docker+Anaconda+CUDA+cuDNN

一、导语 因为要复现文献的需求和实验室里师兄想要给我提升能力的多方面因素在一起&#xff0c;所以学习并实现了相关安装。在这里做一个记录&#xff0c;方便日后查看&#xff0c;如果能给其他同学带来便捷就更好了。 在这篇文章中&#xff0c;我的目标是搭建一个可以使用Py…

鸿蒙4.0开发笔记之ArkTS语法的基础数据类型[DevEco Studio开发](七)

文章目录 一、基本数据类型的定义1、变量声明2、数字类型3、字符串类型4、布尔类型5、数组类型6、元组类型7、枚举类型8、联合类型&#xff08;少用&#xff09;9、未知Unkown类型10、未定义和空值类型 二、数据类型的使用1、组件内部声明变量不需要使用let关键字2、使用Divide…

从戴森发明的“球轮手推车”看专利

今天跟大家分享一个特别有意思的专利&#xff0c;那就是戴森发明的球状轮子的手推车。 相信戴森这个品牌很多人都听过&#xff0c;大家熟悉的应该是戴森吹风机和戴森吸尘器。这两个目前是市场上比较高端的家用设备。 很多人也正是因为这些家用设备了解到戴森这个人&#xff0…