筆記-分布式存儲(chǔ)概述

與單機(jī)環(huán)境下的編程相比齐媒,分布式環(huán)境下的編程有兩個(gè)明顯的不同:首先,分布式環(huán)境下會(huì)出現(xiàn)一部分計(jì)算機(jī)工作正常畅蹂,另一部分計(jì)算機(jī)工作不正常的情況童漩,程序需要在這種情況下盡可能地正常工作,這個(gè)挑戰(zhàn)非常大。其次侥袜,單機(jī)環(huán)境下的函數(shù)調(diào)用常瞅蚬睿可以在微秒級(jí)內(nèi)返回,所以除了少數(shù)訪問(wèn)外部設(shè)備(例如磁盤枫吧、網(wǎng)卡等)的函數(shù)采用異步方式調(diào)用外浦旱,大部分函數(shù)采用同步調(diào)用的方式,編譯器和操作系統(tǒng)在調(diào)用前后自動(dòng)保存與恢復(fù)程序的上下文九杂;在分布式環(huán)境下颁湖,計(jì)算機(jī)之間的函數(shù)調(diào)用(遠(yuǎn)程調(diào)用,即RPC)的返回時(shí)間通常是毫秒或亞毫秒(0.1~1.0毫秒)級(jí)例隆,差不多是單機(jī)環(huán)境的100倍甥捺,使用同步方式遠(yuǎn)遠(yuǎn)不能發(fā)揮現(xiàn)代CPU處理器的性能,所以分布式環(huán)境下的RPC通常采用異步調(diào)用方式镀层,程序需要自己保存和恢復(fù)調(diào)用前后的上下文镰禾,并需要處理更多的異常。

分布式存儲(chǔ)定義

大規(guī)模分布式存儲(chǔ)系統(tǒng)的定義如下:

“分布式存儲(chǔ)系統(tǒng)是大量普通PC服務(wù)器通過(guò)Internet互聯(lián)唱逢,對(duì)外作為一個(gè)整體提供存儲(chǔ)服務(wù)吴侦。”

分布式存儲(chǔ)系統(tǒng)具有如下幾個(gè)特性:

可擴(kuò)展坞古。分布式存儲(chǔ)系統(tǒng)可以擴(kuò)展到幾百臺(tái)甚至幾千臺(tái)的集群規(guī)模备韧,而且,隨著集群規(guī)模的增長(zhǎng)痪枫,系統(tǒng)整體性能表現(xiàn)為線性增長(zhǎng)织堂。

低成本。分布式存儲(chǔ)系統(tǒng)的自動(dòng)容錯(cuò)奶陈、自動(dòng)負(fù)載均衡機(jī)制使其可以構(gòu)建在普通PC機(jī)之上易阳。另外,線性擴(kuò)展能力也使得增加吃粒、減少機(jī)器非常方便闽烙,可以實(shí)現(xiàn)自動(dòng)運(yùn)維。

高性能声搁。無(wú)論是針對(duì)整個(gè)集群還是單臺(tái)服務(wù)器,都要求分布式存儲(chǔ)系統(tǒng)具備高性能捕发。

易用疏旨。分布式存儲(chǔ)系統(tǒng)需要能夠提供易用的對(duì)外接口,另外扎酷,也要求具備完善的監(jiān)控檐涝、運(yùn)維工具,并能夠方便地與其他系統(tǒng)集成,例如谁榜,從Hadoop云計(jì)算系統(tǒng)導(dǎo)入數(shù)據(jù)幅聘。

分布式存儲(chǔ)技術(shù)難點(diǎn)

數(shù)據(jù)分布:如何將數(shù)據(jù)分布到多臺(tái)服務(wù)器才能夠保證數(shù)據(jù)分布均勻?數(shù)據(jù)分布到多臺(tái)服務(wù)器后如何實(shí)現(xiàn)跨服務(wù)器讀寫操作窃植?

一致性:如何將數(shù)據(jù)的多個(gè)副本復(fù)制到多臺(tái)服務(wù)器帝蒿,即使在異常情況下,也能夠保證不同副本之間的數(shù)據(jù)一致性巷怜?

容錯(cuò):如何檢測(cè)到服務(wù)器故障葛超?如何自動(dòng)將出現(xiàn)故障的服務(wù)器上的數(shù)據(jù)和服務(wù)遷移到集群中其他服務(wù)器?

負(fù)載均衡:新增服務(wù)器和集群正常運(yùn)行過(guò)程中如何實(shí)現(xiàn)自動(dòng)負(fù)載均衡延塑?數(shù)據(jù)遷移的過(guò)程中如何保證不影響已有服務(wù)绣张?

事務(wù)與并發(fā)控制:如何實(shí)現(xiàn)分布式事務(wù)?如何實(shí)現(xiàn)多版本并發(fā)控制关带?

易用性:如何設(shè)計(jì)對(duì)外接口使得系統(tǒng)容易使用侥涵?如何設(shè)計(jì)監(jiān)控系統(tǒng)并將系統(tǒng)的內(nèi)部狀態(tài)以方便的形式暴露給運(yùn)維人員?

壓縮/解壓縮:如何根據(jù)數(shù)據(jù)的特點(diǎn)設(shè)計(jì)合理的壓縮/解壓縮算法宋雏?如何平衡壓縮算法節(jié)省的存儲(chǔ)空間和消耗的CPU計(jì)算資源芜飘?

分布式存儲(chǔ)分類

分布式存儲(chǔ)面臨的數(shù)據(jù)需求比較復(fù)雜,大致可以分為三類:

非結(jié)構(gòu)化數(shù)據(jù):包括所有格式的辦公文檔好芭、文本燃箭、圖片、圖像舍败、音頻和視頻信息等招狸。

結(jié)構(gòu)化數(shù)據(jù):一般存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中,可以用二維關(guān)系表結(jié)構(gòu)來(lái)表示邻薯。結(jié)構(gòu)化數(shù)據(jù)的模式(Schema裙戏,包括屬性、數(shù)據(jù)類型以及數(shù)據(jù)之間的聯(lián)系)和內(nèi)容是分開的厕诡,數(shù)據(jù)的模式需要預(yù)先定義累榜。

半結(jié)構(gòu)化數(shù)據(jù):介于非結(jié)構(gòu)化數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)之間,HTML文檔就屬于半結(jié)構(gòu)化數(shù)據(jù)灵嫌。它一般是自描述的壹罚,與結(jié)構(gòu)化數(shù)據(jù)最大的區(qū)別在于,半結(jié)構(gòu)化數(shù)據(jù)的模式結(jié)構(gòu)和內(nèi)容混在一起寿羞,沒(méi)有明顯的區(qū)分猖凛,也不需要預(yù)先定義數(shù)據(jù)的模式結(jié)構(gòu)。

不同的分布式存儲(chǔ)系統(tǒng)適合處理不同類型的數(shù)據(jù)绪穆,分布式存儲(chǔ)系統(tǒng)分為四類:分布式文件系統(tǒng)辨泳、分布式鍵值(Key-Value)系統(tǒng)虱岂、分布式表格系統(tǒng)和分布式數(shù)據(jù)庫(kù)。

1.分布式文件系統(tǒng)

互聯(lián)網(wǎng)應(yīng)用需要存儲(chǔ)大量的圖片菠红、照片第岖、視頻等非結(jié)構(gòu)化數(shù)據(jù)對(duì)象,這類數(shù)據(jù)以對(duì)象的形式組織试溯,對(duì)象之間沒(méi)有關(guān)聯(lián)蔑滓,這樣的數(shù)據(jù)一般稱為Blob(Binary Large Object,二進(jìn)制大對(duì)象)數(shù)據(jù)耍共。

分布式文件系統(tǒng)用于存儲(chǔ)Blob對(duì)象烫饼,典型的系統(tǒng)有Facebook Haystack以及Taobao File System(TFS)。另外试读,分布式文件系統(tǒng)也常作為分布式表格系統(tǒng)以及分布式數(shù)據(jù)庫(kù)的底層存儲(chǔ)杠纵,如谷歌的GFS(Google File System,存儲(chǔ)大文件)可以作為分布式表格系統(tǒng)Google Bigtable的底層存儲(chǔ)钩骇,Amazon的EBS(Elastic Block Store比藻,彈性塊存儲(chǔ))系統(tǒng)可以作為分布式數(shù)據(jù)庫(kù)(Amazon RDS)的底層存儲(chǔ)。

2.分布式鍵值系統(tǒng)

分布式鍵值系統(tǒng)用于存儲(chǔ)關(guān)系簡(jiǎn)單的半結(jié)構(gòu)化數(shù)據(jù)倘屹,它只提供基于主鍵的CRUD(Create/Read/Update/Delete)功能银亲,即根據(jù)主鍵創(chuàng)建、讀取纽匙、更新或者刪除一條鍵值記錄务蝠。

典型的系統(tǒng)有Amazon Dynamo以及Taobao Tair。從數(shù)據(jù)結(jié)構(gòu)的角度看烛缔,分布式鍵值系統(tǒng)與傳統(tǒng)的哈希表比較類似馏段,不同的是,分布式鍵值系統(tǒng)支持將數(shù)據(jù)分布到集群中的多個(gè)存儲(chǔ)節(jié)點(diǎn)践瓷。分布式鍵值系統(tǒng)是分布式表格系統(tǒng)的一種簡(jiǎn)化實(shí)現(xiàn)院喜,一般用作緩存,比如淘寶Tair以及Memcache晕翠。一致性哈希是分布式鍵值系統(tǒng)中常用的數(shù)據(jù)分布技術(shù)喷舀,因其被Amazon DynamoDB系統(tǒng)使用而變得相當(dāng)有名。

3.分布式表格系統(tǒng)

分布式表格系統(tǒng)用于存儲(chǔ)關(guān)系較為復(fù)雜的半結(jié)構(gòu)化數(shù)據(jù)淋肾,與分布式鍵值系統(tǒng)相比硫麻,分布式表格系統(tǒng)不僅僅支持簡(jiǎn)單的CRUD操作,而且支持掃描某個(gè)主鍵范圍樊卓。分布式表格系統(tǒng)以表格為單位組織數(shù)據(jù)庶香,每個(gè)表格包括很多行,通過(guò)主鍵標(biāo)識(shí)一行简识,支持根據(jù)主鍵的CRUD功能以及范圍查找功能赶掖。

分布式表格系統(tǒng)借鑒了很多關(guān)系數(shù)據(jù)庫(kù)的技術(shù),例如支持某種程度上的事務(wù)七扰,比如單行事務(wù)奢赂,某個(gè)實(shí)體組(Entity Group,一個(gè)用戶下的所有數(shù)據(jù)往往構(gòu)成一個(gè)實(shí)體組)下的多行事務(wù)颈走。典型的系統(tǒng)包括Google Bigtable以及Megastore,Microsoft Azure Table Storage,Amazon DynamoDB等膳灶。與分布式數(shù)據(jù)庫(kù)相比,分布式表格系統(tǒng)主要支持針對(duì)單張表格的操作立由,不支持一些特別復(fù)雜的操作轧钓,比如多表關(guān)聯(lián),多表聯(lián)接锐膜,嵌套子查詢毕箍;另外,在分布式表格系統(tǒng)中道盏,同一個(gè)表格的多個(gè)數(shù)據(jù)行也不要求包含相同類型的列而柑,適合半結(jié)構(gòu)化數(shù)據(jù)。分布式表格系統(tǒng)是一種很好的權(quán)衡荷逞,這類系統(tǒng)可以做到超大規(guī)模媒咳,而且支持較多的功能,但實(shí)現(xiàn)往往比較復(fù)雜种远,而且有一定的使用門檻涩澡。

4.分布式數(shù)據(jù)庫(kù)

分布式數(shù)據(jù)庫(kù)一般是從單機(jī)關(guān)系數(shù)據(jù)庫(kù)擴(kuò)展而來(lái),用于存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)坠敷。分布式數(shù)據(jù)庫(kù)采用二維表格組織數(shù)據(jù)妙同,提供SQL關(guān)系查詢語(yǔ)言,支持多表關(guān)聯(lián)常拓,嵌套子查詢等復(fù)雜操作渐溶,并提供數(shù)據(jù)庫(kù)事務(wù)以及并發(fā)控制。

典型的系統(tǒng)包括MySQL數(shù)據(jù)庫(kù)分片(MySQL Sharding)集群弄抬,Amazon RDS以及Microsoft SQL Azure茎辐。分布式數(shù)據(jù)庫(kù)支持的功能最為豐富,符合用戶使用習(xí)慣掂恕,但可擴(kuò)展性往往受到限制拖陆。當(dāng)然,這一點(diǎn)并不是絕對(duì)的懊亡。Google Spanner系統(tǒng)是一個(gè)支持多數(shù)據(jù)中心的分布式數(shù)據(jù)庫(kù)依啰,它不僅支持豐富的關(guān)系數(shù)據(jù)庫(kù)功能,還能擴(kuò)展到多個(gè)數(shù)據(jù)中心的成千上萬(wàn)臺(tái)機(jī)器店枣。除此之外速警,阿里巴巴OceanBase系統(tǒng)也是一個(gè)支持自動(dòng)擴(kuò)展的分布式關(guān)系數(shù)據(jù)庫(kù)叹誉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市闷旧,隨后出現(xiàn)的幾起案子长豁,更是在濱河造成了極大的恐慌,老刑警劉巖忙灼,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匠襟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡该园,警方通過(guò)查閱死者的電腦和手機(jī)酸舍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)里初,“玉大人啃勉,你說(shuō)我怎么就攤上這事∏嗥伲” “怎么了璧亮?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)斥难。 經(jīng)常有香客問(wèn)我枝嘶,道長(zhǎng),這世上最難降的妖魔是什么哑诊? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任群扶,我火速辦了婚禮,結(jié)果婚禮上镀裤,老公的妹妹穿的比我還像新娘竞阐。我一直安慰自己,他們只是感情好暑劝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布骆莹。 她就那樣靜靜地躺著,像睡著了一般担猛。 火紅的嫁衣襯著肌膚如雪幕垦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天傅联,我揣著相機(jī)與錄音先改,去河邊找鬼。 笑死蒸走,一個(gè)胖子當(dāng)著我的面吹牛仇奶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播比驻,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼该溯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼岛抄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起朗伶,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弦撩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后论皆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猾漫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年点晴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悯周。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粒督,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出禽翼,到底是詐尸還是另有隱情屠橄,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布闰挡,位于F島的核電站锐墙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏长酗。R本人自食惡果不足惜溪北,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夺脾。 院中可真熱鬧之拨,春花似錦、人聲如沸咧叭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)菲茬。三九已至吉挣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間生均,已是汗流浹背听想。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留马胧,地道東北人汉买。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像佩脊,于是被迫代替她去往敵國(guó)和親蛙粘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子垫卤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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