《大规模分布式存储系统》第四章 分布式文件系统

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 22:15   3418   0
  • GFS

系统特点:对大文件友好,支持追加写。

租约机制:Chunk之间通过租约机制选主,减少了Master的压力。

追加流程

数据流是复制连,控制流与数据流分开。数据流是复制连的优点是,减少延时、节省带宽,尤其是在跨交换机的情境下。

数据流与控制流分开的优点是,GFS专门设计给大文件(舍弃小文件),猜测可能是在异常情况下(例如,切主)减少带宽(数据流记录在日志中,控制流决定是否写入,如果切主可以重发控制流,不用发数据)。

多端并发,通过重试解决,Chunk上的数据保证数据的偏移量和长度一致,但不保证二进制级别一致。

负载均衡:特别说明一下,GFS中限制了最近创建次数,防止新机器加入导致单点过热问题。

快照:GFS支持文件快照,这个实现比较复杂,机制比较经典。在元数据中需要记录快照信息,但是ChunkServer上的数据并不复制,而是写时复制。


:GFS的成功,说明单Master是可以支持几k-1w甚至更大规模的集群,只要设计合理。


  • Taobao File System

业务特点:主要用于存储淘宝网的图片,写少读多,追加写多、随机写少。


系统瓶颈

1. 数据量很大,元数据过大(100亿张图片,一张图片100字节,1TB源数据),解决方法是元数据分级中心节点存一部分,DataServer存一部分。

2. 读多写少的场景,大量的读会导致IO次数放大,至少三次,第一是读目录到内存,第二是文件的Inode加载到内存,第三是读数据。解决方法是数据组织单位是Block,很多个图片数据组成一个Block,一个Block对应一个物理文件(类似Chunk)。


TFS架构

中心节点一主一备,强一致,通过外部服务监控切主。数据节点一主两备,强一致模型,并未采用复制链的方式,更没有将数据流与控制流分开。每个图片有一个ID,与Block ID,组成唯一表示,作为元数据存储在Meta表中。给每个图片分一个ID,不用Block的偏移量和长度表示,主要还是考虑系统内部迁移、容灾等情况下对业务的透明。DataServer会维护Block ID 与 图片 ID的关系和索引。


追加流程

每次写会请求Master询问Block和主从关系,然后主强一致同步给两个从。这样做主要是业务场景为写少。


:TFS从接口上说不遵循POSIX接口,且不维护目录树,数据间不存在依赖关系,更像是对象系统或者Blob系统,与传统的文件系统区别较大。


  • Facebook Haystack

业务特点

读写QPS较高,写达到3.5K,读甚至达到百万级别。


系统架构

主要分为目录、存储、缓存。目录中的元数据包括照片ID多逻辑卷轴的对应关系,逻辑卷轴到物理卷轴的对应关系,一个物理卷轴100G。写请求想目录申请照片ID、逻辑卷轴以及对应的物理卷轴位置,客户端写三分保证强一致。


讨论

100G的物理卷轴在数据迁移等操作是恢复时间较慢,20M带宽预计1个半小时。


:本文介绍的过于简单,可以看论文了解更多。


  • CDN

主要思想:靠近用户的位置缓存数据,分级缓存,不命中回源。

接入层:4层结构 + 7层结构,保证性能 + 功能。

业务场景:Blob类型存储写少读多,比较适合CDN,有事起热点视频更适合,写一次读可能达到上亿次。

注意问题:数据失效,数据被删除之后如何使CDN及时失效?


  • 总结
GFS作为文件系统的鼻祖,论文更是被广泛研究,本文着重介绍了GFS,其他部分主要是针对不同的设计方案进行了一下对比,并没有过多详细的介绍。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP