深入浅出Google File System

GFS是什么

GFS,顾名思义就是谷歌文件系统,和Big Table,Map Reduce并称谷歌三驾马车。 大部分谷歌服务的基石(Search, Cloud Drive, Gmail etc.)

图片

最底层是文件系统,在之上是将数据模型抽象出来,便于很好的使用,这就是bigTable,在之上是算法, 算法除了访问数据模型外,还能够直接访问文件系统,最上面就是各类应用了

gfs从哪里来

源头是如何保存一个文件?

图片

保存文件需要两部分:

metadata:包括文件信息和索引 file content:具体的文件内容

进一步如何保存大文件

图片

此时索引信息会保存的粒度更粗,存的是chunk,每个chunk是64M

再进一步,怎么保存超大文件

图片

确定啊很明显:chunkServer的变化都需要将其告诉master

怎么进行改进?

图片

系统设计中非常关键的点:耦合和聚合,将属于它的放到它那,不属于的放到其他地方

将master保存每一块在哪个服务器上,每个服务器的索引放到chunkServer中

GFS容错机制

  • 怎么发现数据损坏

图片

可以对每个block保存个checksum,对于1T的数据,只有64M,完全可以放到内存中

如果数据损坏的话呢,Chunk Server就找Master恢复数据

图片

为了防止数据的丢失,就做冗余存储,每个chunk存3份,在chunkServer的选择上,尽可能放到不同的机房,然后同机房也放到不同的机架上

图片

master是关键,会同时发送心跳检查Chunk Server是否运行正常。如果有服务器挂掉的话就向Master申请恢复

图片

心跳的设计:可能是由于master和server之间网络不通,这个时候,master会求助其他的server,让他们再去ping下失联的server

图片

当发现副本数小于3个,会启动修复进程进行修复,修复的优先级

怎么应对热点

图片

负载均衡

核心读写操作

好了,我们构建这么一个庞大的系统最后不就是要读和写嘛,现在我们看看GFS是如何读写的。读数据时Client先向Master要到Chunk信息,然后去ChunkServer取数据

图片

写文件的时候呢,也是先找到Master Server要到信息,然后找到距离最近的Chunk Server。由其带领其他ChunkServer一起写数据。如果图中有任何一步出现错误则中止写入,返回错误

图片

写的时候是往最近的server写,然后server再接收到数据后就往其他server发送,在写入的时候呢,是先缓存下来,最后都缓存好了,再写入到磁盘,好处是减少出错的概率,因为一旦缓存好,再写出错的几率就大大减少了。

第3步是cache,都cached后,由primary server负责协调开始写入,都写成功后,告诉客户端

如果写入出错了怎么办?如果引入出错处理机制,会引入更多的问题,往往解决一个问题会带来更多的问题,因此系统在设计过程中,尽可能只提供最简单的功能,由客户端来负责重试

参考

深入浅出Google File System:视频 硅谷之路9:深入浅出理解GFS:文字

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GreenLeaves

Oracle 快速插入1000万条数据的实现方式

1、使用dual配合connect by level create table BigTable as select rownum as id from du...

2106
来自专栏小巫技术博客

Android入门教程AS重制-AS开发HelloWorld

前面的一节课已经给大家介绍了如何搭建Android开发环境。本节课就来给大家介绍如何使用Android studio来开发我们第一个Android应用程序。

1554
来自专栏非著名程序员

Android开发方便快捷的8个好工具,你造吗?

Android是第二个最流行的用于 智能手机和平板电脑 的操作系统。这里有8个最好的 Android工具以许多不同的方式 帮助开发人员 ,例如 - SDK和AV...

2037
来自专栏Samego开发资源

Terminal - 我的终端生态Log

1454
来自专栏程序员宝库

对抗蠕虫 —— 如何让按钮不被 JS 自动点击

作者: EtherDream www.cnblogs.com/index-html/p/anti_xss_worm.html 前言 XSS 自动点按钮有什么危...

3776
来自专栏程序猿DD

秒杀系统解决方案

感谢于霆霖的投稿,本文摘自:http://yutinglin.cn/2017/08/01/秒杀系统解决方案/ 我看了二十篇左右的秒杀系统设计及解决方案的文章,从...

3017
来自专栏禹都一只猫博客

国内源安装kubernetes的工具

2K2
来自专栏ytkah

发现一个小技巧:火狐浏览器对phpmyadmin支持更友好

  这段时间ytkah正在迁移服务器(A→B),为了方便起见,直接用phpmyadmin导入数据库。一般我们是用navicat来操作数据库的,但是服务器A设置了...

2875
来自专栏程序员叨叨叨

UE4如何获取/下载虚幻4(Unreal Engine4)源码

之前受同事的影响,对UE4产生了迷之兴趣,想尝试着了解一下,于是在游戏蛮牛社区的UE4专栏找到了一篇新手入门引导教程,其中谈及下载源码,但是其推荐链接已无效便想...

952
来自专栏逸鹏说道

初始Windows Server 2012 R2 Hyper-V + 系统安装详细

干啥的?现在企业服务器都是分开的,比如图片服务器,数据库服务器,redis服务器等等,或多或少一个网站都会用到多个服务器,而服务器的成本很高,要是动不动采购几十...

3758

扫码关注云+社区

领取腾讯云代金券