2024年最全盘点分布式文件存储系统,埃森哲java技术面试题

最后

手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

HDFS架构

3、TFS(Taobao FileSystem)


​ TFS是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器 集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化 了文件的访问流程,一定程度上为TFS提供了良好的读写性能。

4、Lustre


Lustre是一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护的。该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数据量存储系统。目前Lustre已经运用在一些领域,例如HP SFS产品等。

5、 MooseFS


MooseFS是一款相对小众的分布式文件系统,不需要修改上层应用接口即可直接使用,支持FUSE的操作方式,部署简单并提供Web界面的方式进行管理与监控,同其他分布式操作系统一样,支持在线扩容,并进行横向扩展。MooseFS还具有可找回误操作删除的文件,相当于一个回收站,方便业务进行定制;同时MooseFS对于海量小文件的读写要比大文件读写的效率高的多。

但MooseFS的缺点同样明显,MFS的主备架构情况类似于MySQL的主从复制,从可以扩展,主却不容易扩展。短期的对策就是按照业务来做切分,随着MFS体系架构中存储文件的总数上升,Master Server对内存的需求量会不断增大。并且对于其单点问题官方自带的是把数据信息从Master Server同步到Metalogger Server上,Master Server一旦出问题Metalogger Server可以恢复升级为Master Server,但是需要恢复时间。目前,也可以通过第三方的高可用方案(heartbeat+drbd+moosefs)来解决 Master Server 的单点问题。

6、MogileFS


由memcahed的开发公司danga一款perl开发的产品,目前国内使用mogielFS的有图片托管网站yupoo等。MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。

7. FastDFS


是一款类似Google FS的开源分布式文件系统,是纯C语言开发的。FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

8、GlusterFS


开源分布式横向扩展文件系统,可以根据存储需求快速调配存储,内含丰富的自动故障转移功能,且摈弃集中元数据服务器的思想。适用于数据密集型任务的可扩展网络文件系统,具有可扩展性、高性能、高可用性等特点。gluster于2011年10月7日被Red Hat收购。

9、 GridFS


MongoDB是知名的NoSQL数据库,GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容,文件内容按一定大小分成若干块,每一块存在一个Document中,这种方法不仅提供了文件存储,还提供了对文件相关的一些附加属性(比如MD5值,文件名等等)的存储。文件在GridFS中会按4MB为单位进行分块存储。

在这里插入图片描述

三、分布式文件系统的对比

==============================================================================

1、整体对比


| 文件系统 | 开发者 | 开发语言 | 开源协议 | 易用性 | 适用场景 | 特性 | 缺点 |

| — | — | — | — | — | — | — | — |

| GFS | Google | | 不开源 | | | | |

| HDFS | Apache | Java | Apache | 安装简单,官方文档专业化 | 存储非常大的文件 | 大数据批量读写,吞吐量高;一次写入,多次读取,顺序读写 | 难以满足毫秒级别的低延时数据访问;不支持多用户并发写相同文件;不适用于大量小文件 |

| Ceph | 加州大学圣克鲁兹分校Sage Weil | C++ | LGPL | 安装简单,官方文档专业化 | 单集群的大中小文件 | 分布式,没有单点依赖,用C编写,性能较好 | 基于不成熟的btrfs,自身也不够成熟稳定,不推荐在生产环境使用 |

| TFS | Alibaba | C++ | GPL V2 | 安装复杂,官方文档少 | 跨集群的小文件 | 针对小文件量身定做,随机IO性能比较高;实现了软RAID,增强系统的并发处理能力及数据容错恢复能力;支持主备热倒换,提升系统的可用性;支持主从集群部署,从集群主要提供读/备功能 | 不适合大文件的存储;不支持POSIX,通用性较低;不支持自定义目录结构与文件权限控制;通过API下载,存在单点的性能瓶颈;官方文档少,学习成本高 |

| Lustre | SUN | C | GPL | 复杂,而且严重依赖内核,需要重新编译内核 | 大文件读写 | 企业级产品,非常庞大,对内核和ext3深度依赖 | |

| MooseFS | Core Sp. z o.o. | C | GPL V3 | 安装简单,官方文档多,且提供Web界面的方式进行管理与监控 | 大量小文件读写 | 比较轻量级,用perl编写,国内用的人比较多 | 对master服务器有单点依赖,性能相对较差 |

| MogileFS | Danga Interactive | Perl | GPL | | 主要用在web领域处理海量小图片 | key-value型元文件系统;效率相比mooseFS高很多 | 不支持FUSE |

| FastDFS | 国内开发者余庆 | C | GPL V3 | 安装简单,社区相对活跃 | 单集群的中小文件 | 系统无需支持POSIX,降低了系统的复杂度,处理效率更高;实现了软RAID,增强系统的并发处理能力及数据容错恢复能力;支持主从文件,支持自定义扩展名;主备Tracker服务,增强系统的可用性 | 不支持断点续传,不适合大文件存储;不支持POSIX,通用性较低;对跨公网的文件同步,存在较大延迟,需要应用做相应的容错策略;同步机制不支持文件正确性校验;通过API下载,存在单点的性能瓶颈 |

| GlusterFS | Z RESEARCH | C | GPL V3 | 安装简单,官方文档专业化 | 适合大文件,小文件性能还存在很大优化空间 | 无元数据服务器,堆栈式架构(基本功能模块可以进行堆栈式组合,实现强大功能),具有线性横向扩展能力;比mooseFS庞大 | 由于没有元数据服务器,因此增加了客户端的负载,占用相当的CPU和内存;但遍历文件目录时,则实现较为复杂和低效,需要搜索所有的存储节点,不建议使用较深的路径 |

| GridFS | MongoDB | C++ | | 安装简单 | 通常用来处理大文件(超过16M) | 可以访问部分文件,而不用向内存中加载全部文件,从而保持高性能;文件和元数据自动同步 | |

2、 特性对比


| 文件系统 | 数据存储方式 | 集群节点通讯协议 | 专用元数据存储点 | 在线扩容 | 冗余备份 | 单点故障 | 跨集群同步 | FUSE挂载 | 访问接口 |

| — | — | — | — | — | — | — | — | — | — |

| HDFS | 文件 | 私有协议(TCP) | 占用MDS | 支持 | | 存在 | 不支持 | 支持 | 不支持POSIX |

| Ceph | 对象/文件/块 | 私有协议(TCP) | 占用MDS | 支持 | 支持 | 存在 | 不支持 | 支持 | POSIX |

| Lustre | 对象 | 私有协议(TCP)/ RDAM(远程直接访问内存) | 双MDS | 支持 | 不支持 | 存在 | 未知 | 支持 | POSIX/MPI |

| MooseFS | 块 | 私有协议(TCP) | 占用MFS | 支持 | 支持 | 存在 | 不支持 | 支持 | POSIX |

| MogileFS | 文件 | HTTP | 占用DB | 支持 | 不支持 | 存在 | 不支持 | 不支持 | 不支持POSIX |

| FastDFS | 文件/块 | 私有协议(TCP) | 无 | 支持 | 支持 | 不存在 | 部分支持 | 不支持 | 不支持POSIX |

| GlusterFS | 文件/块 | 私有协议(TCP)/RDAM(远程直接访问内存) | 无 | 支持 | 支持 | 不存在 | 支持 | 支持 | POSIX |

| TFS | 文件 | 私有协议(TCP) | 占用NS | 支持 | 支持 | 存在 | 支持 | 未知 | 不支持POSIX |

什么是POSIX?

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),也就是Unix下应用程序共同遵循的一种规范。支持POSIX的应用程序意味着在各个Unix系统间提供了跨平台运行的支持。

四、选型参考

========================================================================

  • 适合做通用文件系统的有:Ceph,Lustre,MooseFS,GlusterFS;

  • 适合做小文件存储的文件系统有:Ceph,MooseFS,MogileFS,FastDFS,TFS;

  • 适合做大文件存储的文件系统有:HDFS,Ceph,Lustre,GlusterFS,GridFS;

  • 轻量级文件系统有:MooseFS,FastDFS;

  • 简单易用,用户数量活跃的文件系统有:MooseFS,MogileFS,FastDFS,GlusterFS;

  • 支持FUSE挂载的文件系统有:HDFS,Ceph,Lustre,MooseFS,GlusterFS。

感受:

其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。

特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。

也祝愿各位同学,都能找到自己心动的offer。

分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档

拿到字节跳动offer后,简历被阿里捞了起来,二面迎来了P9"盘问"

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。 目前,国内自主研发的文件系统可谓凤毛麟角。淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述等数据存储。 文章首先概括了TFS的特:最近,淘宝核心系统团队工程师楚材(李震)在其官方博客上撰文(《TFS简介》,以下简称文章)简要介绍了TFS系统的基本情况,引起了社区的关注。 完全扁平化的数据组织结构,抛弃了传统文件系统的目录结构。 在块设备基础上建立自有的文件系统,减少EXT3等文件系统数据碎片带来的性能损耗。 单进程管理单块磁盘的方式,摒除RAID5机制。 带有HA机制的中央控制节,在安全稳定和性能复杂度之间取得平衡。 尽量缩减元数据大小,将元数据全部加载入内存,提升访问速度。 跨机架和IDC的负载均衡和冗余安全策略。 完全平滑扩容。 当前,TFS在淘宝的应用规模达到“数百台PCServer,PB级数据量,百亿数据级别”,对于其性能参数,楚材透漏: TFS在淘宝的部署环境中前端有两层缓冲,到达TFS系统的请求非常离散,所以TFS内部是没有任何数据的内存缓冲的,包括传统文件系统的内存缓冲也不存在......基本上我们可以达到单块磁盘随机IOPS(即I/O per second)理论最大值的60%左右,整机的输出随盘数增加而线性增加。 TFS的逻辑架构图1如下所示: 图1. TFS逻辑架构图(来源:淘宝核心系统团队博客) 楚材结合架构图做了进一步说明: TFS尚未对最终用户提供传统文件系统API,需要通过TFSClient进行接口访问,现有JAVA、JNI、C、PHP的客户端 TFS的NameServer作为中心控制节,监控所有数据节的运行状况,负责读写调度的负载均衡,同时管理一级元数据用来帮助客户端定位需要访问的数据节 TFS的DataServer作为数据节,负责数据实际发生的负载均衡和数据冗余,同时管理二级元数据帮助客户端获取真实的业务数据。 标签:分布式  阿里巴巴

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值