Lecture 03 : GFS

一、一致性

1, 弱一致性

可能会读到旧数据

2, 强一致性

读到的数据都是最新的

3, 一致性比较

  • 强一致性对于app的写方便, 但是性能差

  • 弱一致性有良好的性能, 并且容易延伸服务器, 但是出问题难定位

二、系统设计

1, 为什么chunks那么大

  • 为了均摊费用
  • 减小master的保存chunk状态 大小 (chunk handle)

2, master知道文件架构

  • 对于目录, 知道什么文件在里面
  • 对于文件, 知道每个64MB 的chunk 服务器
  • 保存状态在内存里
  • master可以恢复
    • 操作日志写到磁盘
    • 压缩checkpoint
  • shadow master 落后master, 可以被选拔为master

3, client读过程

  • 发送文件名和chunk index给master
  • master恢复包含目标 chunk 的chunkserver set
    • 包括chunk版本号
    • client缓存上面的信息
  • client询问最近的chunk server
    • 检查版本
    • 如果版本检查错误, 重新联系master

4, client写过程

  • 随机client写到已存在的文件

    • client询问master 目标chunk的位置 和 primary(leases 租约)
    • master回复: chunk servers set、chunk 版本、并且指定谁是primary(有60s的租约)
    • client计算副本的网络拓补结构
    • client发送数据到第一个备份,然后由备份发送给其他备份
      • 使用管道网络(pipeline network??)
    • 备份确认数据回执
    • client 通知primary写
      • primary写
      • 通知其他备份写
      • 全部完成通知client
    • 如果有另一个client对同一个chunk进行写,那么c1/c2会有数据冲突,但是所有的备份数据仍然相同
  • client 追加:

      1. same deal, but may put parts from C1 and C2 in any order
      2. consistent, but not defined
      3. or, if just one client writes, no problem -- both consistent and defined

5,record append

  1. Client record append
  2. client asks master for chunk locations
  3. client pushes data to replicas, but specifies no offset
  4. client contacts primary when data is on all chunk servers
  5. primary assigns sequence number
  6. primary checks if append fits into chunk
  7. if not, pad until chunk boundary
  8. primary picks offset for append
  9. primary applies change locally
  10. primary forwards request to replicas
  11. let's saw R3 fails mid-way through applying the write
  12. primary detects error, tells client to try again
  13. client retries after contacting master
  14. master has perhaps brought up R4 in the meantime (or R3 came back)
  15. one replica now has a gap in the byte sequence, so can't just append
  16. pad to next available offset across all replicas
  17. primary and secondaries apply writes
  18. primary responds to client after receiving acks from all replicas

三、错误

如果master下线了 shadow master可以提供服务, 但是只能提供读操作(脑裂额综合征,导致不能写)

四、 总结

1, GFS缺陷

  • master容错性差
  • 小文件
  • 客户端能读到旧数据
  • 追加可能会有冗余

五、参考

1. GFS.paper

2. lecture 03

【MIT 6.824 】分布式系统 课程笔记(二)Lecture 03 : GFS的更多相关文章

  1. 李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent

    引言: 这个系列的笔记是台大李宏毅老师机器学习的课程笔记 视频链接(bilibili):李宏毅机器学习(2017) 另外已经有有心的同学做了速记并更新在github上:李宏毅机器学习笔记(LeeML- ...

  2. 【MIT 6.824 】分布式系统 课程笔记(一)

    Lecture 02 Infrastructure: RPC & threads 一.多线程挑战 共享数据: 使用互斥信号量.或者避免共享 线程间协作: 使用channels 或者 waitg ...

  3. 李宏毅老师机器学习课程笔记_ML Lecture 2: Where does the error come from?

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  4. 李宏毅老师机器学习课程笔记_ML Lecture 1: ML Lecture 1: Regression - Demo

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  5. 李宏毅老师机器学习课程笔记_ML Lecture 1: 回归案例研究

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  6. 李宏毅老师机器学习课程笔记_ML Lecture 0-2: Why we need to learn machine learning?

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  7. 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  8. 深度学习课程笔记(十二) Matrix Capsule

    深度学习课程笔记(十二) Matrix Capsule with EM Routing  2018-02-02  21:21:09  Paper: https://openreview.net/pdf ...

  9. 深度学习课程笔记(二)Classification: Probility Generative Model

    深度学习课程笔记(二)Classification: Probility Generative Model  2017.10.05 相关材料来自:http://speech.ee.ntu.edu.tw ...

随机推荐

  1. 关于Vertical Align的理解

    1:vertical-align 翻译就是垂直-对齐... 2:关于line-height的点 2.1:如果一个标签没有定义height属性,那么其最终表现的高度一定是由line-height起作用. ...

  2. ubuntu之路——day11.5 迁移学习

    在深度学习领域中,最强力的理念之一就是可以将神经网络学习的一种知识应用到另一个独立的任务中. 看上面的例子,首先我们有一个已经完成训练的神经网络,其目标是图像识别,我们有了绿色的1000000张图片并 ...

  3. PHP如何解决网站大流量与高并发的问题(一)

    高并发的相关概念 在某个时间点,有多少个访问量 如果一个系统的日PV在千万以上,有可能是一个高并发的系统 QPS: 每秒钟请求或者查询的数量,在互联网领域,指每秒相应请求数(指HTTP请求) 吞吐量: ...

  4. 常用的web api总结

    1.querySelector 获取指定元素中匹配css选择器的元素. // 作用在document document.querySelector("#nav"); // 获取文档 ...

  5. linux下的/dev/shm/及对Oracle 的影响

    一./dev/shm/介绍: /dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里.因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm ...

  6. 算法的时间复杂度O

    一.时间复杂度 在进行算法分析时,语句总的执行次数 T(n) 是关于问题的规模n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 的数量级,算法的时间复杂度,也就是算法的时间度量,记作 ...

  7. C#读取Word指定页的内容

    /// <summary> /// Word按页读取内容 /// </summary> /// <param name="page">页数< ...

  8. mkimage工具的用法

    1. mkimage都支持哪些压缩格式 none, gzip, bzip2等 2. 参考资料 这里

  9. AndoridSQLite数据库开发基础教程(7)

    AndoridSQLite数据库开发基础教程(7) 为空表添加数据 开发者可以单击Data按钮,看到Students表中是没有数据的,创建好的Students表是一个空表.如图1.15所示.如果开发者 ...

  10. 品优购商城项目(二)mybatis分页插件

    品优购商城项目第二天,使用mybatis分页插件实现分页.主要实现的是 SSM整合mybatis分页. 一.引用mybatis分页插件 SqlMapConfig.xml <?xml versio ...