Google File System:
Intro reference: http://blog.jobbole.com/83500/
http://blog.csdn.net/opennaive/article/details/7483523
Best Video: https://www.youtube.com/watch?v=WLad7CCexo8
微信分布式系统:http://www.iteye.com/news/32340
初学GFS, 做笔记整理一下。
用一大堆便宜的Linux 电脑来当底层Server。
结构:
首先是普通情况下保存一个大文件的方法。 用一个索引Index来知道在硬盘的哪个位置有什么东西。
对于超大数据存放,比如几百万的文件的话。我们可以分成好几个chunk server. 每个chunk server可以简单的理为一个廉价linux电脑。然后由一个Master server, 一个老大来做索引。首先能够知道文件在哪个chunk server上,先去那个server,然后再让chunk server从它自己的index里找东西。
server里的东西有可能会崩,所以要有一个办法来check chunk server里每一个block里的data是对的。 用checksum 来检查有没有坏。
为了防止server crash,数据要进行备份。每个文件要复制在3个server里。
判断chunk server有没有挂掉用的是心跳。 每个server定期给Master发信息说我还活着,如果有一个server很久没发,它估计就是挂了。【为了防止网络不通的原因,可以叫附近server去问候他一下看看还活着吗】
用户读取文件过程是写法请求给Master, Master返回说你要找的东西在哪个chunk server里,并给你权限。然后用户再去chunk server里找数据。
当出现很多请求到同一个server的时候, Master可以做一个Load balance,根据每个server的内存空间,bandwidth等等做一个分配。
写入文件过程: 每次写入需要更新所有的备份server。 所以当用户说我要写东西,Master会返回所有的chunk server with 要写入的file。然后用户的写入会更新所有的server里的内容。
了解完GFS,我还是对于Paxos分布式系统和GFS的联系不是很懂。都是分布式,有什么联系?
看到一个文章说:似乎是Paxos主要是用在保证分布式系统的数据一致性而使用的算法。然后似乎每个chunk server都可以当Proposer和voter。