分布式系統(tǒng)-3-GFS

在前面的 MapReduce 中我們聊到這個(gè)至簡的模型為我們構(gòu)建分布式系統(tǒng)開啟了新的大門写穴,今天我們來聊聊 MapReduce 中負(fù)責(zé)輸入輸出的文件系統(tǒng)案例琼富。

首先我們來了解一下 GFS 的設(shè)計(jì)目標(biāo):在成千上百臺(tái) Linux 普通機(jī)器存儲(chǔ)巨量數(shù)據(jù),保證高并發(fā)蜓萄。

前幾篇一直提一致性隅茎,啥是一致性?舉個(gè)例子嫉沽,我在支付寶上存了 100后辟犀,在全國無論什么地方連上哪臺(tái)支付寶的服務(wù)器,我的賬戶上都得增加 100绸硕。如果支付寶全國只有一萬個(gè)人在用堂竟,一臺(tái)機(jī)器一個(gè)數(shù)據(jù)庫就足夠了,但用戶的數(shù)量是數(shù)以億計(jì)玻佩,所以肯定是好多機(jī)器在服務(wù)出嘹,所以如果保證不了一致性,是一秒鐘都干不下去的咬崔。

但話又說回來税稼,不是每家企業(yè)都是像支付寶一樣一分錢都不能錯(cuò),比如微博垮斯,你關(guān)注的明星發(fā)了一個(gè)動(dòng)態(tài)郎仆,1分鐘后你才刷新到,其實(shí)也是可以接受兜蠕,所以根據(jù)不同業(yè)務(wù)對(duì)一致性的要求不同扰肌,可分為強(qiáng)一致性和弱一致性。

我們以文件系統(tǒng)舉例熊杨,弱一致性的文件讀取操作 read() 可能會(huì)讀不到最新寫入的數(shù)據(jù)狡耻;而強(qiáng)一致性保證 read() 始終讀到最新寫入的數(shù)據(jù)墩剖。不同的場景有不同的一致性策略猴凹,那么理想狀態(tài)下的一致性模型是怎樣的夷狰?

  1. 文件副本可以像沒有副本的文件系統(tǒng)一樣使用:像多個(gè)客戶端訪問一臺(tái)機(jī)器上某個(gè)磁盤上的文件。
  2. 如果一個(gè)應(yīng)用正在寫入郊霎,之后的讀取操作應(yīng)該讀到寫入的內(nèi)容沼头。
  3. 兩個(gè)應(yīng)用并發(fā)寫入同一個(gè)文件。如果該文件不存在书劝,最后文件中可能會(huì)有混合的內(nèi)容进倍。
  4. 如果兩個(gè)應(yīng)用并發(fā)寫入同一個(gè)目錄,第一個(gè)先寫购对,另一個(gè)后寫猾昆。

理想的攔路虎是什么:機(jī)器故障,網(wǎng)絡(luò)隔離骡苞,要一致性又要高并發(fā)垂蜗。然后會(huì)發(fā)現(xiàn)自相矛盾的理想是不可能實(shí)現(xiàn)的。所以 GFS 在現(xiàn)實(shí)和理想中間找到一個(gè)平衡點(diǎn)解幽√看看現(xiàn)實(shí)是什么:

  1. 大部分文件都很大,GB 級(jí)別
  2. 文件不用刪除
  3. 文件的修改只有追加操作
  4. 偶爾讀不到最新數(shù)據(jù)也可以接受躲株,畢竟瀏覽網(wǎng)頁不是查看賬戶余額
  5. 最重要的是片部,數(shù)據(jù)量巨大,并發(fā)量大霜定,性能要求很高

在 GFS 架構(gòu)中有 Client档悠,Master Server 和 Chunk Server 三種角色,文件被分為固定大小的數(shù)據(jù)塊望浩,在 Chunk 上使用多(默認(rèn) 3)臺(tái)機(jī)器進(jìn)行主從備份提高可用性辖所,而 Master 主要管理元數(shù)據(jù)和 Chunk。對(duì)于 Master 操作如修改目錄是強(qiáng)一致性的曾雕,而對(duì)于 Chunk 是弱一致性奴烙。

有道是解決主要矛盾,忽略次要矛盾剖张。既然要提高并發(fā)量和可用性切诀,我們認(rèn)為每個(gè)文件追加操作在所有副本執(zhí)行成功就算本次客戶端操作成功,而對(duì)于一條數(shù)據(jù)重復(fù)添加搔弄,兩條追加記錄中插入其他數(shù)據(jù)都視為正常幅虑,這大大提高了并發(fā),但要求業(yè)務(wù)代碼區(qū)別每個(gè)記錄的唯一性顾犹。這里并發(fā)性和可用性是主要矛盾倒庵,而一致性則是次要矛盾褒墨。

GFS 對(duì) Master Server 和 Chunk Server 合理分配了各自的負(fù)載重點(diǎn),讓 Master 保持輕量和簡單的一致性模型擎宝;而 Chunk Server 負(fù)責(zé)實(shí)際的文件數(shù)據(jù)與 Linux 的交互以及主副本與其他備份的復(fù)制優(yōu)化郁妈。

容錯(cuò)方面,Master 采用傳統(tǒng)的 Write Ahead Log 和 CheckPoint 機(jī)制外幾臺(tái)熱備份 Master绍申。而 Chunk Server 采用主從備份噩咪,一致性要求不高。

學(xué)習(xí)一個(gè)系統(tǒng)极阅,場景很重要哦胃碾。GFS 為大規(guī)模讀寫,追加筋搏,吞吐量巨大仆百,一致性要求不高的需求設(shè)計(jì)。所以不適合大量小文件奔脐,多客戶端對(duì)同一文件隨機(jī)修改俄周,master 邏輯復(fù)雜且容易出錯(cuò)的場景。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帖族,一起剝皮案震驚了整個(gè)濱河市栈源,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竖般,老刑警劉巖甚垦,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異涣雕,居然都是意外死亡艰亮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門挣郭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迄埃,“玉大人,你說我怎么就攤上這事兑障≈斗牵” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵流译,是天一觀的道長逞怨。 經(jīng)常有香客問我,道長福澡,這世上最難降的妖魔是什么叠赦? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮革砸,結(jié)果婚禮上除秀,老公的妹妹穿的比我還像新娘糯累。我一直安慰自己,他們只是感情好册踩,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布泳姐。 她就那樣靜靜地躺著,像睡著了一般棍好。 火紅的嫁衣襯著肌膚如雪仗岸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天借笙,我揣著相機(jī)與錄音,去河邊找鬼较锡。 笑死业稼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚂蕴。 我是一名探鬼主播低散,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骡楼!你這毒婦竟也來了熔号?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤鸟整,失蹤者是張志新(化名)和其女友劉穎引镊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篮条,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弟头,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涉茧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赴恨。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖伴栓,靈堂內(nèi)的尸體忽然破棺而出伦连,到底是詐尸還是另有隱情,我是刑警寧澤钳垮,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布惑淳,位于F島的核電站,受9級(jí)特大地震影響扔枫,放射性物質(zhì)發(fā)生泄漏汛聚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一短荐、第九天 我趴在偏房一處隱蔽的房頂上張望倚舀。 院中可真熱鬧叹哭,春花似錦、人聲如沸痕貌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舵稠。三九已至超升,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哺徊,已是汗流浹背室琢。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留落追,地道東北人盈滴。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像轿钠,于是被迫代替她去往敵國和親巢钓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 分布式文件系統(tǒng)的主要功能有兩個(gè):一個(gè)是存儲(chǔ)文檔疗垛、圖像症汹、視頻之類的Blob類型數(shù)據(jù);另外一個(gè)是作為分布式表格系統(tǒng)的持...
    olostin閱讀 3,104評(píng)論 1 5
  • 本博客在http://doc001.com/同步更新贷腕。 本文主要內(nèi)容翻譯自MySQL開發(fā)者Ulf Wendel在P...
    doc001閱讀 2,067評(píng)論 0 3
  • 引言 GFS是谷歌2003年提出的一個(gè)文件系統(tǒng)背镇。雖然GFS比較古老,但是后來的HDFS花履,是受到了GFS的啟發(fā)芽世,是G...
    炸茄盒閱讀 2,500評(píng)論 1 5
  • 我深深的把你想起 卻無法填補(bǔ)內(nèi)心的孤獨(dú) 我靜靜的望著你 卻無法滿足給予的痛快 我默默的愛著你 卻無法感知內(nèi)心的真實(shí)...
    念江子閱讀 184評(píng)論 0 0
  • #pragma mark - UINavigationControllerDelegate -(void)navi...
    b36fd6c5af15閱讀 177評(píng)論 0 0