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
微信分布式系統(tǒng):http://www.iteye.com/news/32340
初學(xué)GFS, 做筆記整理一下。
用一大堆便宜的Linux 電腦來(lái)當(dāng)?shù)讓覵erver。
結(jié)構(gòu):
首先是普通情況下保存一個(gè)大文件的方法。 用一個(gè)索引Index來(lái)知道在硬盤的哪個(gè)位置有什么東西慨仿。
對(duì)于超大數(shù)據(jù)存放,比如幾百萬(wàn)的文件的話。我們可以分成好幾個(gè)chunk server. 每個(gè)chunk server可以簡(jiǎn)單的理為一個(gè)廉價(jià)linux電腦鲫剿。然后由一個(gè)Master server, 一個(gè)老大來(lái)做索引稻轨。首先能夠知道文件在哪個(gè)chunk server上灵莲,先去那個(gè)server,然后再讓chunk server從它自己的index里找東西澄者。
server里的東西有可能會(huì)崩笆呆,所以要有一個(gè)辦法來(lái)check chunk server里每一個(gè)block里的data是對(duì)的请琳。 用checksum 來(lái)檢查有沒(méi)有壞。?
為了防止server crash赠幕,數(shù)據(jù)要進(jìn)行備份俄精。每個(gè)文件要復(fù)制在3個(gè)server里。
判斷chunk server有沒(méi)有掛掉用的是心跳榕堰。 每個(gè)server定期給Master發(fā)信息說(shuō)我還活著竖慧,如果有一個(gè)server很久沒(méi)發(fā),它估計(jì)就是掛了逆屡』迹【為了防止網(wǎng)絡(luò)不通的原因,可以叫附近server去問(wèn)候他一下看看還活著嗎】
用戶讀取文件過(guò)程是寫法請(qǐng)求給Master魏蔗, Master返回說(shuō)你要找的東西在哪個(gè)chunk server里砍的,并給你權(quán)限。然后用戶再去chunk server里找數(shù)據(jù)莺治。
當(dāng)出現(xiàn)很多請(qǐng)求到同一個(gè)server的時(shí)候廓鞠, Master可以做一個(gè)Load balance,根據(jù)每個(gè)server的內(nèi)存空間谣旁,bandwidth等等做一個(gè)分配床佳。
寫入文件過(guò)程: 每次寫入需要更新所有的備份server。 所以當(dāng)用戶說(shuō)我要寫東西榄审,Master會(huì)返回所有的chunk server with 要寫入的file砌们。然后用戶的寫入會(huì)更新所有的server里的內(nèi)容。
了解完GFS搁进,我還是對(duì)于Paxos分布式系統(tǒng)和GFS的聯(lián)系不是很懂浪感。都是分布式,有什么聯(lián)系拷获?
看到一個(gè)文章說(shuō):似乎是Paxos主要是用在保證分布式系統(tǒng)的數(shù)據(jù)一致性而使用的算法篮撑。然后似乎每個(gè)chunk server都可以當(dāng)Proposer和voter。