1. 程式人生 > >分散式系統 (大規模分散式系統原理解析和架構實踐)

分散式系統 (大規模分散式系統原理解析和架構實踐)

分散式系統的基礎理論:

分散式系統:多臺機器通過網路連線在一起,作為一個整體為上層提供服務。

一、基礎理論知識:資料分佈、複製、一致性、容錯。

1、異常

(1)伺服器宕機(記憶體錯誤,伺服器停電):如何通過讀取持久化戒指(機械硬碟/固態硬碟)中的資料恢復記憶體資訊,從而恢復宕機前某個一致性狀態。

(2)網路異常(訊息丟失,訊息異常):網路永遠不可靠,任何一個訊息只有接到對方回覆才可以認為是成功的。系統設計時要假設出現異常,並採取相應的處理措施。

(3)磁碟故障(磁碟損壞,磁碟資料錯誤):將資料儲存到多臺計算機上,校驗

2、“超時”

分散式儲存系統的“三態”:“成功”,“失敗”,‘超時“。

客戶端像伺服器端發出請求,並且伺服器端執行完了此請求,但伺服器宕機或者網路異常,導致伺服器端不能想客戶端傳送回覆。此時執行結果為超時。(冪等:一直重試直到成功)

二、效能分析

三、資料分佈:雜湊分佈,順序分佈。

(1)雜湊分佈

根據資料的特徵計算雜湊值,並將雜湊值與叢集中的伺服器建立對映關係,從而將不同雜湊值的資料分佈到不同的伺服器上。

雜湊函式取模。(一致性雜湊)

(2)順序分佈(B+樹儲存結構類似)

(3)負載均衡

每個叢集中有一個總控節點,其他為工作節點,由總控節點進行全域性調控。

工作節點通過心跳包,將節點負載相關資訊(cpu,記憶體,磁碟,網路等資源使用率)傳送給主控節點,主控節點計算出工作節點負載以及需要遷移的資料,生成遷移任務,放入遷移佇列中等待執行,負載均衡要控制節奏,若將大量資料同時遷移到工作節點,系統在新增節點的過程中效能會大幅下降。要平滑地進行遷移,一般需要30分鐘到一小時。

(4)複製

一般有多個副本。一個主副本多個備副本,主副本的資料複製到其他備副本。通過複製協議將資料同步到多個儲存節點,並確保多個副本之間資料的一致性。

複製協議:強同步複製和非同步複製(使用者請求是否需要同步到被副本才返回成功)

組提交: 主備副本的複製通過操作日誌來實現。積攢一定的操作日誌,再批量寫入到磁碟中。

操作日誌的原理:利用磁碟的順序讀寫特性,將客戶端的寫請求順序寫入磁碟, 然後應用到記憶體中,由於記憶體是隨機讀寫裝置,可以很容易的通過各種資料結構,比如B+樹將資料有效的組織起來。

一致性與可用性

一致性:讀操作總是能讀出前一個寫操作的資料。

可用性:當某主機發生故障的時候,不影響讀寫操作。

(5)容錯

故障檢測: 租約機制(帶有超時時間的一種授權)

機器A檢測機器B是否發生故障,則A向B發放租約,B持有的租約在有效期內才允許服務,當B的租約快過期時,可以向A請求續約。當B發生故障,或與A的網路發生故障時,機器B的租約將過期,由於不能及時續約,所以B的租約到期,即主動停止服務。A可確保B不再提供服務,B的服務可安全遷移到其他服務。

故障恢復:

分散式儲存系統分為兩種結構:單層結構和雙層結構

單層結構:當一個主副本失效時,主控節點選另一個備副本作為主副本提供服務。若為臨時故障,就等待一小時,重新將其作為副本。若為永久性故障,則重新增加節點,再拷貝資料,成為備副本。

雙層機構:在副本底層有個分散式檔案系統,將所有節點中的資料儲存起來,當主副本發生故障時,主控節點選擇一個節點載入發生故障節點的服務,(通過分散式檔案系統)

總控節點發生故障:要選主。Paxos協議實現分散式鎖服務。

四、分散式協議(租約,複製協議,一致性協議【兩階段提交協議,Paxos協議】)

兩階段提交協議:為了保證跨多個節點操作的原子性。

請求階段:協調者通知所有的參與者準備提交或取消事務,然後進入表決過程。

提交階段:協調者基於第一階段的投票結果進行決策:是提交還是取消。當所有的參與者都同意提交,則提交;若有一個沒有則取消。

Paxos協議:為了確保多個節點對某個投票達成一致。(選主)   提議者(Proposer),接收者(acceptor)

準備:提議者選擇一個提議序號n,向接收者傳送prepare訊息。 接收者收到prepare訊息後,如果提議序號大於他所回覆的所有提議序號,則將上次接收的提議回覆給提議者,並承諾不再回複比n小的提議。

批准:提議者收到了接收者的回覆後,進入批准階段。如果接收者回復了上次回覆的提議,則提議者選擇提議號最大的值發給接受者;否則生成一個新的題議值傳送給接受者。接受者在不誒被自己的承諾的情況下接受這個請求。

確認:若果超過一半的接收者接受,題議值生效。提議者傳送acknowleage 訊息通知所有的接收者提議生效。