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