许式伟的架构课
许式伟
七牛云 CEO
84945 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 89 讲
许式伟的架构课
15
15
1.0x
00:00/00:00
登录|注册

38 | 文件系统与对象存储

GFS与HDFS的区别
适合存储的数据类型
改良版本的采纳
可靠性与持久性问题
性能瓶颈
伸缩性问题
存储系统的正常业务逻辑
存储中间件的重要性
可用性要求
可靠性要求
存储的使命
下期主题预告:内存缓存
成本与持久性的平衡关系
对象存储的敏感性
对象存储的演进历史
集群规模对持久性的影响
存储密度对持久性的影响
冗余度与持久性
存储成本问题
存储+上传下载加速+多媒体处理
设计目标
对象存储的特点
键值存储与对象存储
非结构化数据的存储方式
分布式存储系统的出现
文件系统的问题
异常处理的重要性
存储的核心逻辑
结语
存储成本与持久性
七牛云存储
对象存储
从文件系统谈起
存储系统的复杂性
文件系统与对象存储

该思维导图由 AI 生成,仅供参考

你好,我是七牛云许式伟。
存储系统从其与生俱来的使命来说,就难以摆脱复杂系统的魔咒。无论是从单机时代的文件系统,还是后来 C/S 或 B/S 结构下数据库这样的存储中间件兴起,还是如今炙手可热的云存储服务来说,存储都很复杂,而且是越来越复杂。

异常处理才是存储的业务逻辑

存储为什么会复杂,要从什么是存储谈起。
让我们简单回顾一下 “36 | 业务状态与存储中间件” 的核心逻辑。
存储这个词非常平凡,存储 + 计算(操作)就构成了一个朴素的计算机模型。简单来说,存储就是负责维持计算系统的状态的单元。从维持状态的角度,我们会有最朴素的可靠性要求。
比如单机时代的文件系统,机器断电、程序故障、系统重启等常规的异常,文件系统必须可以正确地应对,甚至对于磁盘扇区损坏,文件系统也需要考虑尽量将损失降到最低。
到了互联网时代,有了 C/S 或 B/S 结构,存储系统又有了新指标:可用性。为了保证服务质量,那些用户看不见的服务器程序必须时时保持在线,最好做到逻辑上是不宕机的(可用性 100%)。
服务器程序怎么才能做到高可靠、高可用?
答案是存储中间件。没有存储中间件,意味着所有的业务程序,都必须考虑每做一步就对状态进行持久化,以便自己挂掉后另一台服务器(或者自己重启后),知道之前工作到哪里了,接下去应该做些什么。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

对象存储是非结构化数据的理想存储方式,相较于分布式文件系统,它更适合处理海量小文件。与传统文件系统不同,对象存储采用键值存储的方式,摒弃了目录结构的概念,使得请求能够快速定位到特定存储机器上,从而转化为单机问题。七牛云存储作为对象存储的代表,不仅是简单的分布式存储,还考虑了网络问题和多媒体处理,提供了上传下载加速和多媒体处理功能。因此,七牛云存储可以被理解为对象存储加上传下载加速和多媒体处理的综合解决方案。 在文章中,作者深入探讨了存储成本与持久性之间的平衡关系。他指出对象存储对单位存储成本极其敏感,并分析了存储密度和冗余度对持久性的影响。作者通过定性分析,阐述了存储密度对系统的可用性和可靠性的影响,以及集群规模对持久性的影响。最后,作者总结了对象存储的演进历史,强调了对象存储的重要性和敏感性,并展望了下一讲的内容。 总的来说,本文深入浅出地介绍了对象存储的核心话题,涉及了存储成本、持久性和集群规模等关键概念,为读者提供了对对象存储技术的全面了解和思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(27)

  • 最新
  • 精选
  • Geek_88604f
    说到hdfs的文件块,首先看看为什么用块来管理而不用文件。因为块有如下优势:单文件的大小不会受到单节点容量的限制,文件的不同的部分可以存储到不同的节点上;容易对数据进行备份提高容错能力,可以按快来备份;可以按照块来并发处理提高吞吐量。从整体上来看简化了存储系统的设计,一是按照块来设计可以很容易地估算出一个节点可以存出多少文件块;二是方便元数据管理,元数据可以和文件块分开存储,我理解桌面存储系统下的树形结构是做不到的。 那么块设置过小有什么不良影响呢?大概有以下几个影响:文件过小导致磁盘随机寻址操作变多,从而影响磁盘效率;网络开销也随之增大;元数据增多Namenode很快达到瓶颈;处理任务的task不断的启动、销毁,效率低下。 但是也不能一味的往大里设置,过大也会带来不良影响:数据块越大数据加载时间越长,系统恢复过程也越长;监控方面的预设时间间隔和数据量有关;数据块越大对算法也是一个挑战。 需要特别说明的是当文件大小小于块大小时,它占用的空间是小文件的实际大小,并非快的大小。hdfs对小文件是做了一些优化的,例如:hadoop archive、sequence file、combinefileinportformate。

    作者回复: 多谢补充

    2019-09-05
    32
  • Geek_88604f
    非结构化和结构化数据的键值存储,实现机制上往往有极大的差异。主要体现在哪些方面,许老师?

    作者回复: 主要还是因为值大小差异非常大,导致两者优化目标不同。对象存储的第一优化目标是低成本,结构化键值存储的优化目标是高iops,方向完全不同。

    2019-09-03
    12
  • Han
    老师,mysql等关系数据库的索引都是基于文件,那这种数据库底层实现都是基于操作系统的文件系统吗?

    作者回复: 是基于文件系统,而且很多时候都是基于file mapping技术(其实就是虚拟内存管理那一套)。

    2020-06-06
    9
  • 安排
    对象存储底层实现时还会经过操作系统自带的文件系统吗?还是说对象存储操作的直接是裸盘?相当于自己重新实现了文件系统功能?

    作者回复: 对象存储有一些是基于裸盘,有一些基于文件系统。推荐是前者。

    2019-09-06
    6
  • EidLeung
    “第一,HDFS 的 block 大小为 64M,如果文件不足 64M 也会占用 64M。”这句话有问题吧,HDFS的问题是文件的元数据存储在内存中,因此不适合小文件。不足64M(现在好像是128M了吧)的小文件在HDFS中存储只是在磁盘多了一些元数据信息而已,文件大小还是原来的大小啊。

    作者回复: 多谢补充,对hdfs的近况了解的确不多

    2019-09-03
    4
  • yga
    假设集群总的容量规模不变,但我们不是增加单台机器的磁盘数量,而是增加磁盘的密度。比如,我们把单盘容量增加一倍,那么我们集群的磁盘数也减少一半。这样我们的修复时长 T0 会变成 4T0(修复时间和要修复的数据量成正比,和集群可用的磁盘数成反比)—— T0怎么变成4T0?修复时间和数据量成正比,和集群可用磁盘数成反比。为什么呢,希望老师能解答

    作者回复: 因为磁盘容量变大一倍,要修复的数据量变大一倍,而系统的总磁盘数减半,所以最终修复时间需要4倍。

    2019-09-06
    3
  • zhuyc
    对象存储消除了结构化的关系和影响,那么对象间的关系,例如 原图与缩略图 的关系,是维护在另一个系统中吗?

    作者回复: 通过命名对应,或者在另外的关系型存储中记录

    2019-09-13
    2
  • 安排
    结构化数据和非结构化数据啥区别啊?表结构就是结构化数据吗?

    作者回复: 主要是数据类型不一样。非结构化数据主要是图片、视频、应用日志等。表结构是结构化的。

    2019-09-06
    2
  • 有铭
    老师,你提到七牛云的对象存储是没有目录这个概念的;我记得阿里的oss是有的,也就是说,两者的实现原理并不一样?

    作者回复: 阿里也没有,目录是模拟出来的,这一点所有对象存储都一样。在七牛之间中也可以模拟出目录概念,但是它和真实的目录差别非常大。

    2019-09-03
    3
    2
  • coyang
    在分布式系统中维护文件系统的目录树结构,会遭遇诸多难题。所以 HDFS 想把 Master 扩展为分布式的元数据集群并不容易。->GlusterFS就是分布式的元数据集群,没有master,active/standby的概念。实现也很复杂。许老师能不能说一下未来分布式存储的趋势?个人感觉分布式文件系统还会长期保留来适应老的application迁移到分布式系统不用做任何改变。

    作者回复: 是的,老 application 不消亡,文件系统在服务端就会一直存在。

    2019-09-04
    1
收起评论
显示
设置
留言
27
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部