分布式架构关键技术
分布式的概念
所謂分布式,狹義的指代以Google的三駕馬車,GFS、Map/Reduce、BigTable為框架核心的分布式存儲(chǔ)和計(jì)算系統(tǒng)。Hadoop是一個(gè)基于Java實(shí)現(xiàn)的,開源的,分布式存儲(chǔ)和計(jì)算的項(xiàng)目。作為這個(gè)領(lǐng)域最富盛名的開源項(xiàng)目, Hadoop實(shí)現(xiàn)的是分布式的文件系統(tǒng)HDFS,和分布式的計(jì)算(Map/Reduce)框架。
分布式架構(gòu)關(guān)鍵技術(shù)主要有分布式文件系統(tǒng)、分布式存儲(chǔ)和分布式數(shù)據(jù)庫。
?
分布式文件系統(tǒng)
分布式文件系統(tǒng),在整個(gè)分布式系統(tǒng)體系中處于最低層最基礎(chǔ)的地位。分布式文件系統(tǒng)包含是分布式和文件系統(tǒng)這兩個(gè)方面的內(nèi)涵。
從文件系統(tǒng)的客戶使用的角度來看,它就是一個(gè)標(biāo)準(zhǔn)的文件系統(tǒng),提供了一系列API,由此進(jìn)行文件或目錄的創(chuàng)建、移動(dòng)、刪除,以及對(duì)文件的讀寫等操作。
從內(nèi)部實(shí)現(xiàn)來看,分布式的系統(tǒng)則不再和普通文件系統(tǒng)一樣負(fù)責(zé)管理本地磁盤,它的文件內(nèi)容和目錄結(jié)構(gòu)都不一定存儲(chǔ)在本地磁盤上,而是可能通過網(wǎng)絡(luò)傳輸?shù)竭h(yuǎn)端系統(tǒng)上。同時(shí),同一個(gè)文件存儲(chǔ)不只是在一臺(tái)機(jī)器上,而是在一簇機(jī)器上分布式存儲(chǔ),協(xié)同提供服務(wù),即所謂“分布式”。
?
分布式計(jì)算
分布式計(jì)算狹義的指代“按Google Map/Reduce框架所設(shè)計(jì)的分布式框架”。分布式文件系統(tǒng)是為各種分布式計(jì)算需求所服務(wù)的。從分布式的角度上看,分布式計(jì)算的輸入文件往往規(guī)模巨大,且分布在多個(gè)機(jī)器上,單機(jī)計(jì)算完全不可支撐且效率低下,因此Map/Reduce框架需要提供一套機(jī)制,將此計(jì)算擴(kuò)展到無限規(guī)模的機(jī)器集群上進(jìn)行。它將復(fù)雜的運(yùn)行于大規(guī)模集群上的并行計(jì)算過程高度的抽象到了兩個(gè)函數(shù),Map 和 Reduce。。適合用 MapReduce 來處理的數(shù)據(jù)集(或任務(wù))有一個(gè)基本要求: 待處理的數(shù)據(jù)集可以分解成許多小的數(shù)據(jù)集,而且每一個(gè)小數(shù)據(jù)集都可以完全并行地進(jìn)行處理。
MapReduce 的計(jì)算過程就是將大數(shù)據(jù)集分解為成百上千的小數(shù)據(jù)集,每個(gè)(或若干個(gè))數(shù)據(jù)集分別由集群中的一個(gè)結(jié)點(diǎn)(一般就是一臺(tái)普通的計(jì)算機(jī))進(jìn)行處理并生成中間結(jié)果,然后這些中間結(jié)果又由大量的結(jié)點(diǎn)進(jìn)行合并, 形成最終結(jié)果。 計(jì)算模型的核心是 Map 和 Reduce 兩個(gè)函數(shù),這兩個(gè)函數(shù)由用戶負(fù)責(zé)實(shí)現(xiàn),功能是按一定的映射規(guī)則將輸入的 <key, value> 對(duì)轉(zhuǎn)換成另一個(gè)或一批 <key, value> 對(duì)輸出。 基于 MapReduce 計(jì)算模型編寫分布式并行程序非常簡單,程序員的主要編碼工作就是實(shí)現(xiàn) Map 和 Reduce 函數(shù),其它的并行編程中的種種復(fù)雜問題,如分布式存儲(chǔ),工作調(diào)度,負(fù)載平衡,容錯(cuò)處理,網(wǎng)絡(luò)通信等,均由 MapReduce 框架負(fù)責(zé)處理,程序員完全不用處理。
?
分布式數(shù)據(jù)庫
分布式數(shù)據(jù)庫具備高可用、高擴(kuò)展等特點(diǎn),解決了傳統(tǒng)數(shù)據(jù)庫無法解決的問題。
分布式數(shù)據(jù)庫解決方案具備兩個(gè)特點(diǎn):第一、具有彈性可擴(kuò)展性;第二、單點(diǎn)不可靠、但整個(gè)集群是可靠。分布式數(shù)據(jù)庫是未來數(shù)據(jù)庫或者互聯(lián)網(wǎng)應(yīng)用比較青睞的數(shù)據(jù)庫。
分布式數(shù)據(jù)庫和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫還有一定的區(qū)別。傳統(tǒng)的數(shù)據(jù)庫有非常強(qiáng)的事務(wù)能力,因其一致性高導(dǎo)致它的擴(kuò)展性非常復(fù)雜;對(duì)于互聯(lián)網(wǎng)企業(yè)來講它更多關(guān)注的不是一致性,只需要在最終的數(shù)據(jù)一致性就可以,這樣導(dǎo)致出現(xiàn)傳統(tǒng)的數(shù)據(jù)庫解決不了企業(yè)應(yīng)用的問題,然后就會(huì)出現(xiàn)分布式數(shù)據(jù)庫解決方案。
?
分布式的數(shù)據(jù)庫解決方案不代表傳統(tǒng)數(shù)據(jù)庫的終結(jié),因?yàn)閭鹘y(tǒng)的數(shù)據(jù)庫有它的用武之地,分布式的數(shù)據(jù)庫在它的應(yīng)用場景當(dāng)中會(huì)應(yīng)用起來。未來,分布式數(shù)據(jù)庫和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫它們應(yīng)該是互相彌補(bǔ)、互相結(jié)合的。
總結(jié)
- 上一篇: 最小生成树kruskal算法并查集版 C
- 下一篇: android状态机实现原理