GFS 阅读笔记

2023-11-08

这篇博客是我阅读著名的 GFS 论文(The Google File System)所总结的笔记以及自己一些的思考。这篇论文是一篇非常经典的论文,尤其对于想要了解分布式或者刚刚开始研究分布式的人来说,是一篇非常好的读物,它里面提到了许多分布式方向的基本问题,许多分布式的研究都是围绕这些基本问题的。

分布式系统

在了解谷歌文件系统(Google File System)之前,我们必须要了解一下有关分布式系统的一些概念。

Q1:一致性是什么?

在分布式文件系统中,很重要的一部分就是数据的复制(replica),为了保证分布式文件系统的高可用性,我们常常会把文件在不同的机器上存储多份,一致性的要求就是保证这些不同机器上的复制品(replicas)能够保持一致。

Q2:如果只有一个应用程序,它对文件系统进行了一次写操作,这个应用程序在这次写操作之后的读操作会观测到什么呢?

它会正常观测到它刚刚写入的数据。

Q3:如果另外多个应用程序执行的读操作呢,它们会观测到什么呢?

对于弱一致性的模型来说,这次读操作有可能会读取到已经过期的数据;

对于强一致性的模型来说,读操作读到的始终是上一次写入操作进行完成之后的数据。

强一致性能保证写入操作,但是它会影响性能(强一致性协议复杂)

Q4:理想化的一致性模型是怎样的?

分布式文件系统通过在多个机器上复制文件来保证可用性,在理想化的一致性模型中,在文件系统中所进行的各种操作都要像是在一台机器上进行的操作。实现理想化一致性模型的难点在于处理高并发问题、如何处理分布式集群中的机器崩溃以及达到网络的高效利用,理想化的一致性模型还会出现裂脑问题(split-brain,如果两个存储着相同文件的机器 A,B同时崩溃,其他的机器并不知道是哪一个先崩溃的,所以就不知道该用 A 恢复 B还是用 B 恢复 A)。总之,使用理想化一致性算法会影响性能,并且它的实现非常复杂(例如:Paxos)

GFS 不是采用的理想化一致性模型,但是它解决了机器崩溃恢复的问题以及能够应对高并发操作同时又能相对高效地利用网络。

GFS 是什么?

GFS(Google File System )是一个大规模分布式文件系统,具有容错的特性(机器崩溃后的处理),并且具有较高性能,能够响应众多的客户端。

GFS 设计背景

  • 经常会有机器崩溃(因为机器众多,难免会有机器崩溃)
  • 有些存储的文件比较大
  • append 操作更常见(在文件后追加,而不是 overwrite 覆盖)
  • 主要包括两种读取 (read)操作:一种是大的顺序读取(单个文件读取几百 KB 甚至是几 MB);另一种是小的随机读取(在随机位置读取几 KB)
  • 需要支持并发(例如,多个客户端同时进行 append 操作)

GFS 所需提供操作

create(文件创建)、delete(文件删除)、open(打开文件)、close(关闭文件)、read(读取文件)、write(写入文件)、record append(追加文件)、snapshot(快照)。

GFS 架构

GFS 的架构由一台 master 服务器和许多台文件服务器(chunkserver)构成,并且有若干客户端(client)与之交互。

GFS 特点概述

  • 文件分块(chunks),每块有一个64位标识符(chunk handle),它是在 chunk 被创建时由 master 分配的,每一个 chunk 会有3个备份,分别在不同的机器上。
  • Master 存储所有的 metadata,包括命名空间(namespace)、访问控制信息(access control)、文件与 chunk 的映射关系(mapping)以
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GFS 阅读笔记 的相关文章

  • zookeeper 搭建教程(完整版)

    zookeeper 搭建教程 完整版 1 解压zookeeper文件 root master tar zxvf opt software apache zookeeper 3 5 7 bin tar gz C opt module 修改文件
  • 2022Java面试题大全(整理版)面试题附答案详解,最全面详细

    目录 JAVA八股文 Java基础 String 和StringBuffer和 StringBuilder的区别 sleep 区间wait 区间有什么区别 Object 中有哪些方法 其中clone 怎么实现一个对象的克隆 Java如何实现
  • dubbo配置提供者和消费者

    1 找到对应的文件 提供者 消费者 参考dubbo官网 http dubbo apache org zh cn docs user quick start html
  • 微服务框架

    微服务框架 1 SOA思想 面向服务的架构 SOA 是一个组件模型 它将应用程序的不同功能单元 称为服务 进行拆分 并通过这些服务之间定义良好的接口和协议联系起来 接口是采用中立的方式进行定义的 它应该独立于实现服务的硬件平台 操作系统和编
  • [架构之路-185]-《软考-系统分析师》-3-操作系统基本原理 - 文件索引表

    目录 一 文件的索引块 二 索引分配表 三 索引表的链接方案 四 多层索引 五 混合索引分配 一 文件的索引块 存放在目录中的文件 并非是文件的真实内容 目录中记录了文件的索引块是几号磁盘块 文件对应的索引表是存放在指定的磁盘块中的 二 索
  • 在centos在部署分布式文件存储系统Minio

    docker部署以及详细文档自取 链接 https pan baidu com s 14NhCk1SQZEHqzMubpUD0eQ 提取码 xyxy 0 应用场景 电商网站 海量商品图片 视频网站 海量视频文件 网盘 海量文件 社交网站 海
  • 分布式系统详解--基础知识(通信)

    分布式系统详解 基础知识 通信 上一篇文章我们写到了 分布式系统详解 基础知识 线程 简单了解了一下线程的基本概念和线程和分布式的那斩不断理还乱的关系 今天再讲解一下它的另外一个必备知识 通信 进程之间进行通信是分布式的核心 失去了通信 也
  • 基于一致性理论的孤岛微电网分布式控制策略研究(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 仿真搭建 2 2 优化控制
  • 分布式数字身份DID简介(五)DID的应用

    在上一篇文章中 我们给出了一种零知识证明的方法 解决用户身份属性的隐私问题 下面我们再来谈谈基于DID技术 我们都能在什么场景去应用 01 无密码安全登录 这个使用场景大家应该都很熟悉了 就类似于微信扫码登录 当我们要注册或者登录一个网站时
  • MQ - KAFKA 基础篇

    1 KAFKA的核心组件 API Producer API 它允许应用程序向一个或多个 topics 上发送消息记录 Consumer API 允许应用程序订阅一个或多个 topics 并处理为其生成的记录流 Streams API 它允许
  • Apollo(阿波罗)——携程推出的分布式配置管理中心 & 启动Apollo & SpringBoot集成 & @ConfigurationProperties的使用姿势

    前言 Apollo 阿波罗 是一款可靠的分布式配置管理中心 诞生于携程框架研发部 能够集中化管理应用不同环境 不同集群的配置 配置修改后能够实时推送到应用端 并且具备规范的权限 流程治理等特性 适用于微服务配置管理场景 本篇博客介绍如何启动
  • 什么是自动化测试,看完你就懂了!

    随着互联网技术的飞速发展 软件本身的规模和复杂度也是逐步增加 为了保证软件项目能够保质保量交付到客户手中 软件测试环节就显得非常重要了 它可以看作是软件项目交付给客户最后一道安全保证 今天给大家聊聊软件测试当中自动化测试相关的知识 希望对大
  • AI分布式训练:DDP (数据并行)技术详解与实战

    编者按 如今传统的单机单卡模式已经无法满足超大模型进行训练的要求 如何更好地 更轻松地利用多个 GPU 资源进行模型训练成为了人工智能领域的热门话题 我们今天为大家带来的这篇文章详细介绍了一种名为 DDP Distributed Data
  • Kafka基础—3、Kafka 消费者API

    一 Kafka消费者API 1 消息消费 当我们谈论 Kafka 消费者 API 中的消息消费时 我们指的是消费者如何从 Kafka 主题中拉取消息 并对这些消息进行处理的过程 消费者是 Kafka 中的消息接收端 它从指定的主题中获取消息
  • 【分布式算法】Gossip协议详解

    一 为什么需要 Gossip 协议 为了实现 BASE 理论中的 最终一致性原则 两阶段提交协议和 Raft 算法需要满足 大多数服务节点正常运行 原则 如果希望系统在少数服务节点正常运行的情况下 仍能对外提供稳定服务 这时就需要实现最终一
  • Zookeeper 和 Dubbo 的关系?

    Zookeeper的作用 zookeeper用来注册服务和进行负载均衡 哪一个服务由哪一个机器来提供必需让调用者知道 简单来说就是ip地址和服务名称的对应关系 当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现 但是如果提供服务
  • Zookeeper 和 Dubbo 的关系?

    Zookeeper的作用 zookeeper用来注册服务和进行负载均衡 哪一个服务由哪一个机器来提供必需让调用者知道 简单来说就是ip地址和服务名称的对应关系 当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现 但是如果提供服务
  • 网站被攻击了怎么恢复?如何在被攻击后第一时间接入高防恢复正常访问?

    网站受到攻击的原因是多种多样的 包括技术漏洞 人为疏忽 社会工程学等各种因素 保护网站的安全需要综合运用技术手段 当网站遭到攻击时 以下几个步骤可以帮助恢复网站的正常运行 1 分析攻击 首先要确认网站被攻击的类型和程度 以确定所需的恢复步骤
  • 网站被攻击了怎么恢复?如何在被攻击后第一时间接入高防恢复正常访问?

    网站受到攻击的原因是多种多样的 包括技术漏洞 人为疏忽 社会工程学等各种因素 保护网站的安全需要综合运用技术手段 当网站遭到攻击时 以下几个步骤可以帮助恢复网站的正常运行 1 分析攻击 首先要确认网站被攻击的类型和程度 以确定所需的恢复步骤
  • 考虑极端天气线路脆弱性的配电网分布式电源配置优化模型【IEEE33节点】(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现

随机推荐