主要分布式文件系统架构对比分析: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,多数据库管理平台(私有云)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网站有必要使用SSL证书吗

随着互联网的快速发展,网络安全问题也变得日益突出,SSL证书的作用日益凸显。 什么是SSL证书? SSL证书(Secure Sockets Layer Certificate),也称为TLS证书(Transport Layer Security Certifica…

基于springboot,vue高校图书馆管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatisredis 本项…

工业机器视觉megauging(向光有光)使用说明书(十二,轻量级的visionpro)

关于最后一个工具的介绍:就是这个“相机图像” 我们可以鼠标双击点进去看一看: 在图像上点击,就可以截取一块图像,是可以放大缩小的,这个放大很low,是我以前研究缩放入门时的版本,本想删除&…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于多场景模糊集和改进二阶锥方法的配电网优化调度》

这个标题涉及到配电网(Distribution Network)的优化调度问题,其中使用了两个关键的方法:多场景模糊集和改进二阶锥方法。 多场景模糊集: 多场景: 这可能指的是在考虑不同情景或条件下的配电网运行状态。每个…

[UnityWebGL]修改webgl启动模板

首先了解什么是WEBGGL启动模板,如下图: 其次,启动模板在哪里设置,如下图: 最后,怎么改启动模板里面的内容(提供最简单的方式,直接改官方的): 1、首先在Asset…

<DB2>《AIX服务器DB2数据库裸设备表空间扩容方案》

《AIX服务器DB2数据库裸设备表空间扩容方案》 1 表空间状态查看1.1 连接数据库(实例用户操作)1.2 查看表空间剩余(实例用户操作)1.3 查看所属表空间的容器属性(实例用户操作) 2 VG状态和LV状态查看2.1 查看…

宝塔+docker+jenkins部署vue项目----笔记版

宝塔dockerjenkins部署vue项目(保姆级教程)https://blog.csdn.net/weixin_47284756/article/details/129339940 基于上述教程,不同的地方。 1.我使用的是gitee,所以需要在jenkins中安装gitee插件 配置gitee,其他默认配…

前端入口教程_web01

web标准 记得看! html:表示整个页面 head: titile: body: 常用标签 1.标题标签 2.段落标签 3.换行标签 4.文本格式化标签 5. 和 标签 6.图像标签 相对路径–用来插自己本地的图片 #### 绝对路径–用来插网上找的图…

二叉树_翻转二叉树

//给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 // // // // 示例 1: // // // // //输入:root [4,2,7,1,3,6,9] //输出:[4,7,2,9,6,3,1] // // // 示例 2: // // // // //输入…

设计模式---第五篇

系列文章目录 文章目录 系列文章目录前言一、知道观察者模式吗?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、知道观察者模式吗? 答:观察者模式是定义对…

Mysq8l在Centos上安装后忘记root密码如何重新设置

场景 Mysql8在Windows上离线安装时忘记root密码: Mysql8在Windows上离线安装时忘记root密码-CSDN博客 如果是在Windows上忘记密码可以参考上面。 如果在Centos中安装mysql可以参考下面。 CentOS7中安装Mysql8并配置远程连接和修改密码等: CentOS7中…

【HDFS】调试慢节点pipiline ack信息

Client - DN1 - DN2 - DN3 DN3 send ack:[0][d3]。 DN2 send ack: [从dn2入队到收到dn3的ack耗时,0] [d2,d3]。 DN1 send ack: [pkt从dn1入队到收到dn2的ack耗时,pkt从dn2入队到收到dn3的ack耗时,0] [d1,d2,d3]。 Client receive: 就是DN1发送过来数据。 客户端收到的第一个…

ZooKeeper 如何保证数据一致性?

在分布式场景中,ZooKeeper 的应用非常广泛,比如数据发布和订阅、命名服务、配置中心、注册中心、分布式锁等。 ZooKeeper 提供了一个类似于 Linux 文件系统的数据模型,和基于 Watcher 机制的分布式事件通知,这些特性都依赖 ZooKee…

「数据组织」Gartner确定了四种类型的首席数据官组织

许多CDO不知道如何成功地设计他们的组织 首席数据官(CDO)的角色从2014年的400个迅速采用到2015年的1000个,这对CDO办公室在组织中的结构和定位提出了重要问题。据Gartner,Inc.称,cdo在设计办公室时应遵循四项组织设计原…

分布式事务有哪些解决方案?

本文我们来讨论下分布式事务的相关知识点。 分布式事务是分布式系统中非常重要的一部分,最典型的例子是银行转账和扣款,A 和 B 的账户信息在不同的服务器上,A 给 B 转账 100 元,要完成这个操作,需要两个步骤&#xff0…

CSS浅谈动画性能

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目的一、举个栗子二、性能分析1.从图层分析2.性能分析 总结 目的 为了探究使用动画时,『transform』和『width、height、margin等』的差异 一、举个栗子…

MacOS qemu运行loongarch linux

本文章参考了 https://github.com/LeisureLinux/bilibili/blob/master/scripts/qemu-busybox.sh#L205 windows qemu安装飞腾Aarch64 Loongarch64 操作系统 亲测_qemu安装arm系统-CSDN博客 https://www.cnblogs.com/missed-forest/p/17667862.html 1. 安装qemu brew instal…

软件工程期末复习(1)

学习资料 软件工程知识点总结_嘤桃子的博客-CSDN博客 软件工程学习笔记_软件工程导论第六版张海藩pdf-CSDN博客 【软件工程】软件工程期末试卷习题课讲解!!_哔哩哔哩_bilibili 【拯救者】软件工程速成(期末考研复试软考)均适用. 支持4K_哔哩哔哩_bil…

Linux多路转接select,poll

文章目录 目录 文章目录 一、五种IO模型 1.阻塞IO: 2.非阻塞IO 3.信号驱动IO 4.IO多路转接 5.异步IO 二、高级IO的一些重要概念 1.同步通信和异步通信 2.阻塞和非阻塞 三、其他高级IO 四、非阻塞IO 1.fctl函数 2.实现setNoBlock函数,将文件描述符设置…

vue $nextTick 样式私有化

$nextTick 先updated中更新,再nextTick 状态更改做什么事情: updated $nextTick 同步执行完之后,把当前放到队列中 $forceUpdate->sub.update() // 把更新操作放在队列里面 队列机制 基于发布订阅模式,callbacks队列 更新完毕…