雲端運算讀書筆記(二)

來源:互聯網
上載者:User

google雲端運算原理與應用

google雲端運算服務包括:google檔案系統GFS,分散式運算編程模形MapReduce,分布式鎖服務Chubby,分布式結構化資料表Bigtable,分布式儲存系統Megastore以及分布式監控系統Dapper等。

GFS提供了海量資料的儲存和訪問能力。

GFS

系統架構:

分為三類角色,client(用戶端),Master(主伺服器)和Chunk Server(資料區塊伺服器)

1,使用的是中心伺服器模組,可以任意添加chunk server.

2,不實現緩衝,這是從必要性和可行性兩方面考慮。

必要性:用戶端大部分是流式讀寫,不存在大量的重複讀寫。

可行性:如何維護緩衝與實際資料之間一致性是一個極其複雜的問題。加之網路等不確定因素,一致性問題尤為複雜。而且資料量非常大,以當前的記憶體容量根本無法緩衝。

而對於儲存在GFS的Master中的資料實現了緩衝。

3,在使用者狀態下實現,正常的檔案系統是作業系統的重要組成部分,在核心態實現檔案系統可以更好的和作業系統本身結合。

但GFS卻選擇在使用者態下實現,主要基於以下考慮:

1)在使用者態下直接利用作業系統提供的POSIX編程介面就可以擴充存取資料,無需瞭解內部的實現介面。

2)POSIX介面提供的功能更為豐富不受核心編程的限制

3)在使用者態下有多種調試工具

4)使用者態下,Master和Chunk Server都以進程的方式運行,單個進程不會影響整個作業系統

5)在使用者態下,GFS和作業系統運行在不同的空間,兩者的耦合性降低,方便GFS自身的擴充和升級

4,只提供專有的介面

容錯機制:

1,Master容錯

1)命名空間也就是整個檔案系統的目錄結構

2)Chunk與檔案名稱的映射表

3)Chunk副本的位置資訊,每一個Chunk預設有三個副本

2,Chunk Server容錯

GFS採用副本的方式實現Chunk Server的容錯,預設每個副本儲存3個

GFS劃分的每一個Chunk的預設大小是64MB

系統管理技術:

1)大規模的叢集安裝

2)故障檢測

3)節點動態加入

4)節能

分存式資料處理MapReduce

MapReduce就是“映射”和“化簡”的概念和主要思想。

比如查詢一個大型文本中各個單詞出現的次數,經過Map處理後,形成一批中間結果<單詞,出現次數>,而Reduce函數處理中間結果,將相同單詞出現的次數累加,得到每個單詞出現的次數。

分存式鎖服務

Chubby是Google設計的提供粗粒度服務的一個檔案系統,它是基於松耦合的分布式系統。

通過使用Chubby的鎖服務,使用者可以確保資料操作過程中的一致性。

1,Paxos演算法

paxos是一種基於訊息傳送的一致性演算法,用於解決分布式中的一致性問題

如何解決分布式中的一致性問題呢,最簡單的就是設定一個結點,所有操作都經過這個結點,這樣就能保證唯一性的問題。

但是這樣缺點也是顯而易見的,就是如果結點失效就會出現混亂,所以需要在系統中設定多個這樣的結點。

Paxos演算法分成三個類型:proposers、acceptors和learners,其中Proposers提出決議,acceptors批准決議,learners擷取並使用已經通過的決議。

2,Chubby系統設計

Chubby的設計目標主要有以下幾個:

1)高可用性和高可靠性

2)高擴充性

3)支援粗粒度的建議性鎖服務

4)服務資訊的直接儲存

5)支援通報機制

6)支援緩衝機制

分存式結構化資料表Bigtable

Bigtable是Google基於GFS和Chubby的分布式儲存系統。

Bigtable在很多方面跟資料庫類似。

資料模型:

Bigtable是一個分布式的多維映射表,表中資料通過一個行關鍵字,一個列關鍵字以及一個時間戳記進行索引。Bigtable對儲存在其中的資料不做任何解析,一律看成是字串。

1)行

可以是任意的字串,但是大小不能超過64K,排序是根據行關鍵字進行排序的,推薦使用的是字典序

2)列

有列族的概念,族名:限定詞(family:qualifier),族名必須有意義,限定詞可以任意選定,同族被壓縮儲存在一起

族同時也是Bigtable中存取控制的基本單元,也就是說存取權限是在族這一層級上進行的

3)時間戳記

預設是64位整數

目前提供兩種設定,一種是保留最近N個不同的版本,另一種就是保留限定時間內的所有不同版本

系統架構:

Bigtable主要由三部分組成:用戶端程式庫(Client Library)、一個主伺服器(Master Server)和多個子表格服務器(Table Server)

用戶端訪問Bigtable服務時,首先利用函數庫執行open操作開啟一個鎖,鎖開啟後用戶端就可以跟子表格服務器進行通訊了。

主伺服器的作用:

1)新子表分配

2)子表格服務器狀態監控

3)子伺服器之間的負載平衡

子表格服務器:

1)SSTable中的資料被劃分成一個個的塊(Block),每個塊的大小是可以設定的,一般為64KB,在SSTable的結尾有一個索引(Index),在SSTable開啟時這個索引會被載入進記憶體,所以尋找的速度會非常快。

每個子表都是由多個SSTable和日誌組成

2)子表地址,在Bigtable系統的內部採用的是一種類似B+樹的三層查詢體系

先查根子表,然後找到中繼資料子表,最後找到對應的使用者表

3)子表的資料存放區及讀寫操作

效能最佳化

1)局部性群組

2)壓縮

3)布隆過濾器

分存式儲存系統Megastore

Megastore:關係型資料庫和NoSQL的完美結合

設計目標:

1)針對可用性:引入了Paxos演算法

2)針對擴充性:採用資料分區將每個分區存放在NoSQL中

megastore的資料模型

通過類似SQL的方式進行查詢,有一套對應的查詢語言。

Megastore的核心技術-複製

1)複製的日誌

2)資料讀取 (1)本地查詢 (2)發現位置 (3)追趕 (4)驗證 (5)查詢資料

3)資料寫入 (1)接受leader (2)準備 (3)接受 (4)失效 (5)生效

分存式系統的監控基礎架構Dapper

分布式監控系統

基本設計目標:

1)低開銷

2)對應用程式層透明

3)可擴充性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.