【MIT 6.824 】分布式系统 课程笔记(二)Lecture 03 : GFS
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 追加:
same deal, but may put parts from C1 and C2 in any order
consistent, but not defined
or, if just one client writes, no problem -- both consistent and defined
5,record append
Client record append
client asks master for chunk locations
client pushes data to replicas, but specifies no offset
client contacts primary when data is on all chunk servers
primary assigns sequence number
primary checks if append fits into chunk
if not, pad until chunk boundary
primary picks offset for append
primary applies change locally
primary forwards request to replicas
let's saw R3 fails mid-way through applying the write
primary detects error, tells client to try again
client retries after contacting master
master has perhaps brought up R4 in the meantime (or R3 came back)
one replica now has a gap in the byte sequence, so can't just append
pad to next available offset across all replicas
primary and secondaries apply writes
primary responds to client after receiving acks from all replicas
三、错误
如果master下线了 shadow master可以提供服务, 但是只能提供读操作(脑裂额综合征,导致不能写)
四、 总结
1, GFS缺陷
- master容错性差
- 小文件
- 客户端能读到旧数据
- 追加可能会有冗余
五、参考
【MIT 6.824 】分布式系统 课程笔记(二)Lecture 03 : GFS的更多相关文章
- 李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent
引言: 这个系列的笔记是台大李宏毅老师机器学习的课程笔记 视频链接(bilibili):李宏毅机器学习(2017) 另外已经有有心的同学做了速记并更新在github上:李宏毅机器学习笔记(LeeML- ...
- 【MIT 6.824 】分布式系统 课程笔记(一)
Lecture 02 Infrastructure: RPC & threads 一.多线程挑战 共享数据: 使用互斥信号量.或者避免共享 线程间协作: 使用channels 或者 waitg ...
- 李宏毅老师机器学习课程笔记_ML Lecture 2: Where does the error come from?
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 1: ML Lecture 1: Regression - Demo
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 1: 回归案例研究
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 0-2: Why we need to learn machine learning?
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 深度学习课程笔记(十二) Matrix Capsule
深度学习课程笔记(十二) Matrix Capsule with EM Routing 2018-02-02 21:21:09 Paper: https://openreview.net/pdf ...
- 深度学习课程笔记(二)Classification: Probility Generative Model
深度学习课程笔记(二)Classification: Probility Generative Model 2017.10.05 相关材料来自:http://speech.ee.ntu.edu.tw ...
随机推荐
- 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...
- T-MAX组--项目冲刺(第二天)
THE SECOND DAY 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 T-MAX组--项目冲刺(第二天) 团队名称 T-M ...
- org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
编程中遇到:org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot ...
- Linux系列 | Ubuntu 各版本号和名称对照【转】
转载处:https://blog.csdn.net/songfulu/article/details/85310273 版本 开发代号 中译 发布日期 支持结束时间 内核版本 桌面版 服务器版 4 ...
- log4j实现日志自动清理功能
log4j不支持自动清理功能,但是log4j2版本支持,log4j2是log4j的升级版,比logback先进. log4j升级为log4j2(不需要改动代码)https://blog.csdn.ne ...
- Java基础 println print 实现输出换行
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- autoComplete TextView
这个比较简单,只是将AutoCompleteTextView绑定一个ArrayAdapter就可以了. 界面布局: <?xml version="1.0" encoding= ...
- TypeScript的泛型接口 泛型类接口
/* typeScript中的泛型 泛型接口 */ //函数类型接口 /* interface ConfigFn{ (value1:string,value2:string):string; } va ...
- shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...
- 三、HTTP响应
HTTP消息是服务器和客户端之间交换数据的方式 有两种类型的消息: 请求--由客户端发送用来触发一个服务器上的动作 相应--来自服务器的应答 一.HTTP响应的构成 1.状态行 HTTP响应的起始行被 ...