探索谷歌的秘密花园:Google文件系统GFS之旅(Google File System)

news2024/11/15 11:14:53

文章目录

  • 🏘️GFS系统架构
    • GFS系统节点类型
    • GFS实现机制
  • 🍎GFS特点
    • 采用中心服务器模式
    • 不缓存数据
    • 在用户态下实现
    • 只提供专用接口
  • 容错机制
    • ⚒️Master容错机制
    • 🔄 Chunk Server容错
  • 🛠 系统管理技术

🏘️GFS系统架构

  • 大型分布式文件系统
  • Google的GFS采用廉价的商用机器构建,对硬件设施要求不高
  • GFS将容错交给文件系统完成,利用软件的方法解决系统可靠性问题
    在这里插入图片描述

在这里插入图片描述

GFS系统节点类型

  • GFS将整个系统节点分为三类角色
    在这里插入图片描述
  • Client:GFS提供给应用程序的访问接口,以库文件的形式提供
  • Master是GFS的管理节点,负责整个文件系统的管理,逻辑上只有一个
  • Chunk Server负责具体的存储工作,数据以文件的形式保存,可以有多个,其数目直接决定了GFS的规模

GFS实现机制

  1. 客户端与Master节点交互:
    • 客户端首先访问Master节点
    • 获取交互的Chunk Server信息
  2. 控制流与数据流的分离:
    • 客户端与Master: 仅存在控制流,无数据流
      • 🚀 降低了Master的负载
    • 客户端与Chunk Server: 直接进行数据流传输
      • 📈 由于文件分成多个Chunk分布式存储
      • 🚀 客户端可以同时访问多个Chunk Server
      • 📊 实现系统I/O的高度并行,提高系统整体性能
访问
获取Chunk Server信息
控制流
数据流
数据流
数据流
存储Chunk
存储Chunk
存储Chunk
客户端
Master节点
Chunk Server 1
Chunk Server 2
Chunk Server 3
Chunk 1
Chunk 2
Chunk 3

🍎GFS特点

采用中心服务器模式

  • 优点:

    • ✔️ 方便地增加Chunk Server
    • ✔️ Master掌握系统内所有Chunk Server的情况,方便进行负载均衡
    • ✔️ 不存在元数据的一致性问题
  • 缺点:

    • ❗ Master极易成为整个系统性能和可靠性上的瓶颈
  • 应对机制:

    • 🛠️ 控制元数据规模
    • 🛠️ 对Master进行远程备份
    • 🛠️ 控制信息和数据分流

不缓存数据

  • 客户端的文件操作大多是流式读写,使用Cache对性能提高不大

  • Chunk Server上数据以文件形式存储,本地的文件系统自然会进行缓存

  • GFS对存储在Master中的元数据采取缓存策略:

    • 🚀 Master需要频繁操作元数据,直接保存在内存里以提高操作的效率
    • 🚀 采用相应的压缩机制降低元数据占用空间大小,提高内存利用率

在用户态下实现

  • 利用POSIX编程接口存取数据,降低了实现难度,提高通用性
  • POSIX接口提供功能丰富,不受内核编程限制
  • 用户态下有多种调试工具,便于调试
  • Master和Chunk Server作为进程运行,不影响操作系统整体稳定性
  • GFS和操作系统运行在不同的空间,耦合性降低,方便独立升级

只提供专用接口

  • 降低了实现难度,直接在应用层实现
  • 根据应用特点提供特殊支持
  • 专用接口减少了操作系统的上下文切换

容错机制

⚒️Master容错机制

在这里插入图片描述

  • 当Master发生故障时,在磁盘数据保存完好的情况下,可以迅速恢复以上元数据
  • 为防止Master彻底死机的情况,GFS还提供Master远程的实时备份

预防措施
Master故障
迅速恢复元数据
命名空间 目录结构
Chunk与文件名映射表
Chunk副本位置信息
Master远程实时备份

🔄 Chunk Server容错

  • 副本机制 📦: GFS采用副本的方式实现Chunk Server的容错,每一个Chunk有多个存储副本(默认为三个)
  • 写入确认 ✅: 对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入。
  • 自动复制副本 🔄: 相关的副本出现丢失或不可恢复等情况,Master自动将该副本复制到其他Chunk Server。
  • 文件与Chunk 📂: GFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB。
  • Block与校验和 🛠️: 每一个Chunk以Block为单位进行划分,大小为64KB,每一个Block对应一个32bit的校验和。

🛠 系统管理技术

  • 大规模集群安装技术 🌐: GFS集群中通常有非常多的节点,需要相应的技术支撑。
  • 故障检测技术 🔍: GFS构建在不可靠廉价计算机之上的文件系统,由于节点数目众多,故障发生十分频繁。
  • 节点动态加入技术 ➕: 新的Chunk Server加入时,只需裸机加入,大大减少GFS维护工作量。
  • 节能技术 💡: Google采用多种机制降低服务器能耗,如采用蓄电池代替昂贵的UPS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1515945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM整合项目(添加家居)

文章目录 1.需求分析2.设计结构3.编写Service层1.创建文件夹2.FurnService.java3.FurnServiceImpl.java4.单元测试 FurnServiceTest.java5.指定默认图片位置1.Furn.java 为imgPath设置默认值2.Furn.java 的全参构造器内判断imgPath是否为空 4.返回json数据的通用类com/sun/furn…

FreeRTOS操作系统学习——调试与优化

本文介绍 在FreeRTOS中,我们经常会运用到栈这个技术,我们对某个任务分配空间时,往往不确定分配多大空间的栈。任务拿到分配的栈后,大多数情况下,使用率都达不到80%,为了节省栈空间的开销,我们可…

k8s部署InfluxDB

(作者:陈玓玏) 1. 拉取镜像 docker pull influxdb #拉取镜像 docker run -d influxdb:latest #后台运行容器 docker exec -it 89b /bin/bash #进入容器,89b是容器ID的前三位 cd /usr/bin #进入容器后,进入此文件夹…

GNN/GCN自己学习

一、图的基本组成 V:点(特征) E:边 U:图(全局特征) 二、用途 整合特征(embedding),做重构 三、邻接矩阵 以图像为例,每个像素点周围都有邻居,…

HTML CSS入门:从基础到实践

🌐 HTML & CSS入门:从基础到实践 🎨 📖 引言 HTML和CSS是构建网页的基石。HTML(超文本标记语言)用于创建网页内容,而CSS(层叠样式表)则用于美化这些内容。无论你是…

【嵌入式——QT】QPainter基本绘图

【嵌入式——QT】QPainter基本绘图 QPainter与QPaintDevicepaintEvent事件和绘图区QPainter主要属性QPen主要功能QBrush主要功能QPainter绘制基本图形方法图示代码示例 QPainter与QPaintDevice QPainter是用来进行绘图操作的类,QPaintDevice是一个可以使用QPainter…

RabbitMQ 模拟实现【一】:需求分析

文章目录 消息队列消息队列消息队列的作用图解生产者消费者模型BrokerSever 内部涉及的关键概念交换机功能消费的实现方式数据存储方式网络通信消息应答模式 消息队列模拟实现Gitee网址 消息队列 采用 SpringBoot 框架实现 消息队列 通常说的消息队列,简称MQ&am…

AP AUTOSAR 执行管理与状态管理的交互

本系列文章将从以下六个方面来介绍AP平台核心技术: 接下来,让我们来看第4个部分: 第四部分 执行管理与状态管理的交互 4.1 执行管理与状态管理的交互

这个班要不还是别上了吧。

先不提代码写得对不对。咱就是说,打印语句都出不来,搞个chuanchuan哟。 (谁能给我解释一下。。🙃)

Stable Diffusion 模型下载:Juggernaut(主宰、真实、幻想)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 该模型是一个真实模型,并且具有幻想和创意色彩。 作者述:我选取了…

腾讯t-design 实现图片预览组件的显示和使用

腾讯t-design 发布了 下面介绍一个组件的使用 图片预览 <template><div><div class"tdesign-demo-image-viewer__base"><t-image-viewer :images"[img]"><template #trigger"{ open }"><div class"tde…

【智能算法】非洲秃鹫优化算法(AVOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2021年&#xff0c;Abdollahzadeh等人受到非洲秃鹫自然捕食行为启发&#xff0c;提出了非洲秃鹫优化算法(African Vultures Optimization Algorithm, AVOA)。 2.算法原理 2.1算法思想 AVOA模拟了…

13.WEB渗透测试--Kali Linux(一)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;12.WEB渗透测试-Linux系统管理、安全加固&#xff08;下&#xff09;-CSDN博客 kali由 Of…

python爬虫实战——抖音

目录 1、分析主页作品列表标签结构 2、进入作品页前 判断作品是视频作品还是图文作品 3、进入视频作品页面&#xff0c;获取视频 4、进入图文作品页面&#xff0c;获取图片 5、完整参考代码 6、获取全部作品的一种方法 本文主要使用 selenium.webdriver&#xff08;Firef…

【js刷题:数据结构数组篇之移除元素】

移除元素 一、题目二、思路三、方法1.暴力解法2.双指针法定义快指针和慢指针代码展示 三、力扣刷题1.删除排序数组中的重复项 一、题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额…

vivo统一接入网关VUA转发性能优化实践

作者&#xff1a;vivo 互联网服务器团队 - Qiu Xiangcun 本文将探讨如何通过使用Intel QuickAssist Technology&#xff08;QAT&#xff09;来优化VUA的HTTPS转发性能。我们将介绍如何使用QAT通过硬件加速来提高HTTPS转发的性能&#xff0c;并探讨QAT在不同应用场景中的表现。最…

重学SpringBoot3-内容协商机制

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-内容协商机制 ContentNegotiationConfigurer接口配置内容协商URL参数Accept头使用Url扩展名 自定义内容协商格式步骤1: 注册自定义媒体类型步骤2: 实现H…

AI实战:借助Python与PaddleOCR,实现高精度文本检测与识别

1、引言 欢迎来到今天的教程&#xff1a;“驾驭PaddleOCR&#xff0c;解锁Python文字识别新技能”。在本篇文章中&#xff0c;我们将手把手教你如何安装及使用这款强大的Python库&#xff0c;轻松应对各类图像中的文字识别问题。 2、安装PaddleOCR 首先确保你的环境中已安装…

苹果电脑下载crossover对电脑有影响吗 crossover mac 好用吗CrossOver虚拟机 CrossOver打游戏

苹果电脑下载crossover对电脑有影响吗&#xff1f; 在苹果电脑下载安装crossover对电脑没有什么影响&#xff0c;并且可以解决macOS系统不能安装Windows应用程序的问题。相较于虚拟机和双系统而言&#xff0c;crossover安装软件更简单&#xff0c;占用内存也更小。下面我们来看…

Css基础——精灵图(sprites)和字体图标

1、精灵图 1.1、精灵图的由来 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送 请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度。 因此&#xff0c;为了有效地减…