今天终于拜读了著名GFS的论文,大体上的设计思路是明白了,复杂的系统,其实用了很多简单的逻辑在里面,下面是记录的一些笔记:
设计之初(系统需求)
系统使用便宜的PC节点来实现,所以对于监控和容错要求很高。
系统主要目标为提供大于100Mb的文件服务,常见文件为Gb以上,支持小文件,但是不做优化。
系统主要有两种类型的读:持续的流读和随机的跳读。同时还包括大文件、连续文件的写入和追加。
系统必须支持多客户。例如利用生产者-消费者队列模型或者其他的方法。
网路响应时间需要快。
GFS架构
数据的主从模式
Master的任务
Chunk Size的选择(64Mb)
Metadata特点:内存存储、Chunk的位置
Operation Log:如何处理并发的日志,如何确保日志安全(本地、远端同时写入才返回成功)
垃圾回收机制
在大型分布系统中,组件的失败非常常见。所以需要一种机制,来检查或者收回那些不一致的空间。
高可用策略
1、快速恢复。不管因为什么原因导致的服务终止,在数秒钟内恢复
2、块复制。
3、Master的复制以及Shadown,确保故障时文件的可读
数据一致性,一致性的信息存储在内存中,读取文件时进行验证