http://blog.csdn.net/u010738184/article/details/49472795
分布式系統的基礎理論:
分布式系統:多台機器通過網絡連接在一起,作為一個整體為上層提供服務。
一、基礎理論知識:數據分布、復制、一致性、容錯。
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 消息通知所有的接收者提議生效。
