GFS架构

GFS是Google的分布式文件系统,旨在实现高可用、高可靠、高性能和可扩展性。系统包括文件客户端、主服务器和存储服务器。主服务器作为单点控制,负责元数据管理,而存储服务器集群保存文件数据。GFS通过元数据缓存、日志记录、文件分块和冗余副本等策略确保高可用性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.GFS是什么

全称是Google File System,Google早期研发的分布式文件系统。
画外音:与分布式文件系统对应的,是单机文件系统,Windows和Linux操作系统都有文件系统。

GFS的设计目标是什么

主要有四个目标:
(1) 高可用(availability):是指7*24提供服务,任何一台机器挂了或者磁盘坏了,服务不终止,文件不丢失;
(2) 高可靠(reliability):是指正确的输入,得到正确的输出,读取a文件,不会得到b文件;
(3) 高性能(performance):是指吞吐量很牛逼,每秒响应几十万请求;
(4) 可扩展(scalability):是指加机器,就能提升性能,就能存更多文件。

GFS对外提供什么接口

文件创建,删除,打开,关闭,读,写,快照。
解释如下:
除了快照,接口和单机文件系统差不多。
快照其实是快速文件目录树的拷贝,并不是所有文件的快照。
GFS能够成为分布式架构的经典案例,原因之一,就是接口简单,但反映的架构理念不简单。

GFS的系统架构如何

系统里只有文件客户端主服务器存储服务器三个角色。
在这里插入图片描述

(1) 客户端(GFS client),是以库的形式提供的,提供的就是对外要用的接口;
(2) 主服务器(GFS master),是单点,存储文件信息,目录信息,文件服务器信息,那个文件存在哪些文件服务器上等元数据;
(3) 存储服务器(GFS chunk-server),是集群,存储文件;
为什么要设计单点master?
单点master意味着有一个节点可以避免分布式锁,可以拥有全局视野,能够统一调度与监控,系统整体复杂度降低很多。简单来说,锁可以降级成本地锁,分布式调度可以降级为单点调度。
详细描述:
(1) master拥有所有文件目录结构,要操作某个文件,必须获得相应的锁;
画外音:一般情况下,不会对同一个网页进行并发写操作,应用场景决定锁冲突其实不大;
(2) master拥有全局视野,能够避免死锁;
(3) master知道chunk-server的信息,能够很容易的做chunk-server监控,负载均衡;
(4) master知道所有文件的副本分布信息,能够很容易的做文件大小的负载均衡;
画外音:负载均衡分为请求量的均衡,文件存储的容量均衡。

GFS的高可用是怎么保证

多个chunk-server可以通过线性扩展提升处理能力和存储空间,GFS的潜在瓶颈是单点master,所以GFS要想达到超高性能,主要架构优化思路在于,“提升master性能,减少与master交互”。

(1) 只存储元数据,不存储文件数据,不让磁盘容量成为master瓶颈;
(2) 元数据会存储在磁盘和内存里,不让磁盘IO成为master瓶颈;
(3) 元数据大小内存完全能装得下,不让内存容量成为master瓶颈;
(4) 所有数据流,数据缓存,都不走master,不让带宽成为master瓶颈;
(5) 元数据可以缓存在客户端,每次从客户端本地缓存访问元数据,只有元数据不准确的时候,才会访问master,不让CPU成为成为master瓶颈;
当然,chunk-server虽然有多个,也会通过一些手段提升chunk-server的性能,例如:
(1) 文件块使用64M,避免太多碎片降低性能;
(2) 使用追加写,而不是随机写,提升性能;
(3) 使用TCP长连接,提升性能。

GFS如何保证系统可靠性

保证元数据与文件数据的可靠性,GFS使用了很多非常经典的手段。
(1) 元数据的变更,会先写日志,以确保不会丢失,即日志也会冗余,具备高可用。
(2) master会轮询探测chunk-server的存活性,保证有chunk-server失效时,chunk-server的状态是准确的,即文件会存多份,短时间内chunk-server挂掉是不影响的。
(3) 元数据的修改是原子的,由master控制,master必须保证元数据修改的顺序性;
(4) 文件的正确性,通过checksum保证;
(5) 监控,快速发现问题;

总结
GFS的架构,体现了很多经典的设计实践:

  • 简化系统角色,单点master降低系统复杂度
  • 不管是文件还是服务,均通过“冗余+故障自动转移”保证高可用
  • 由于存在单点master,GFS将“降低与单点master的交互”作为性能优化核心
  • 通过写日志,原子修改,checksum,快速监控快速恢复等方式保证可靠性与完整性
  • 通过串行化保证多个副本数据的一致性
  • 控制流与数据流分离,提高性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值