日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

分布式系统原理 之2 基本副本协议

發布時間:2024/2/28 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式系统原理 之2 基本副本协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分布式系統原理

基本副本協議

副本控制協議指按特定的協議流程控制副本數據的讀寫行為,使得副本滿足一定的可用性和一致性要求的分布式協議。

副本控制協議要具有一定的對抗異常狀態的容錯能力,從而使得系統具有一定的可用性,同時副本控制協議要能提供一定一致性級別。

本文將副本控制協議分為兩大類:“中心化(centralized)副本控制協議”和“去中心化(decentralized)副本控制協議”。

1. 中心化副本控制協議

中心化副本控制協議的基本思路是由一個中心節點協調副本數據的更新、維護副本之間的一致性。

  • 中心化副本控制協議的優點是協議相對較為簡單,所有的副本相關的控制交由中心節點完成。并發控制將由中心節點完成,從而使得一個分布式并發控制問題,簡化為一個單機并發控制問題。

  • 中心化副本控制協議的缺點是系統的可用性依賴于中心化節點,當中心節點異常或與中心節點通信中斷時,系統將失去某些服務(通常至少失去更新服務),所以中心化副本控制協議的缺點正是存在一定的停服務時間

2. primary-secondary 協議

本文著重介紹一種非常常用的 primary-secondary (也稱 primary-backup)的中心化副本控制協議。在 primary-secondary類型的協議中,副本被分為兩大類,其中有且僅有一個副本作為 primary 副本,除 primary 以外的副本都作為 secondary 副本。維護 primary 副本的節點作為中心節點,中心節點負責維護數據的更新、并發控制、協調副本的一致性。

Primary-secondary類型的協議一般要解決四大類問題:*數據更新流程、數據讀取方式、Primary
副本的確定和切換、數據同步(reconcile)*。

2.1 數據更新基本流程

流程 2.2.1: Primary-secondary 協議的數據更新流程如下:

1. 數據更新都由 primary 節點協調完成。2. 外部節點將更新操作發給 primary 節點3. primary 節點進行并發控制即確定并發更新操作的先后順序4. primary 節點將更新操作發送給 secondary 節點5. primary 根據 secondary 節點的完成情況決定更新是否成功并將結果返回外部節點
  • 由于異常,第 4 步可能在有些副本上成功,有些副本上失敗,在有些副本上超時。不同的副本控制協議對于第 4 步異常的處理都不一樣。例如,在提供最終一致性服務的系統中,secondary 節點可以與 primary 不一致,只要后續 secondary 節點可以慢慢同步到與 primary 一致的狀態即可滿足最終一致性的要求。對于第 4 步的具體處理,本節先不展開討論,在 2.4 中介紹一種基于 Quorum 的副本控制機制。

2.2 數據讀取方式

與數據更新流程類似,讀取方式也與一致性高度相關。

  • 如果只需要最終一致性,則讀取任何副本都可以滿足需求。

  • 如果需要會話一致性,則可以為副本設置版本號,每次更新后遞增版本號,用戶讀取副本時驗證版本號,從而保證用戶讀到的數據在會話范圍內單調遞增。

  • 使用 primary-secondary 比較困難的是實現強一致性。

這里簡單討論 primary-secondary 實現強一致性的幾種思路

  • 第一、由于數據的更新流程都是由 primary 控制的,primary 副本上的數據一定是最新的,所以如果始終只讀 primary 副本的數據,可以實現強一致性。如果只讀 primary 副本,則 secondary 副本
    將不提供讀服務。實踐中,如果副本不與機器綁定,而是按照數據段為單位維護副本,僅有 primary
    副本提供讀服務在很多場景下并不會造出機器資源浪費。

  • 第二、由 primary 控制節點 secondary 節點的可用性。當 primary 更新某個 secondary 副本不成功時,primary 將該 secondary 副本標記為不可用,從而用戶不再讀取該不可用的副本。這種方式依賴于一個中心元數據管理系統,用于記錄哪些副本可用,哪些副本不可用。該方式通過降低系統的可用性來提高系統的一致性

  • 第三、基于 Quorum 機制。

2.3 primary 副本的確定與切換

在 primary-secondary 類型的協議中,另一個核心的問題是如何確定 primary 副本,尤其是在原primary 副本所在機器出現宕機等異常時,需要有某種機制切換 primary 副本,使得某個 secondary副本成為新的 primary 副本。

  • 通常的,在 primary-secondary 類型的分布式系統中,哪個副本是 primary 這一信息都屬于元信息,由專門的元數據服務器維護。執行更新操作時,首先查詢元數據服務器獲取副本 primary 信息,從而進一步執行數據更新流程。

  • 切換副本的難點在于兩個方面,首先,如何確定節點的狀態以發現原 primary 節點異常是一個較為復雜的問題。在 2.3 中,詳細介紹一種基于 Lease 機制確定節點狀態的方法。再者,切換 primary后,不能影響副本的一致性。本文在 2.4.5 介紹一種基于 Quorum 機制確定新 primary 的方法。

2.4 數據同步

Primary-secondary 型協議一般都會遇到 secondary 副本與 primary 不一致的問題。此時,不一致的 secondary 副本需要與 primary 進行同步(reconcile)。通常不一致的形式有三種:

  • 一、由于網絡分化等異常,secondary 上的數據落后于 primary 上的數據。對于第一種 secondary 數據落后的情況,常見的同步方式是回放 primary 上的操作日志(通常是redo 日志),從而追上 primary 的更新進度。

  • 二、在某些協議下,secondary 上的數據有可能是臟數據,需要被丟棄。所謂臟數據是由于primary 副本沒有進行某一更新操作,而 secondary 副本上反而進行的多余的修改操作,從而造成secondary 副本數據錯誤。對于臟數據的情況,較好的做法是設計的分布式協議不產生臟數據

  • 三、secondary 是一個新增加的副本,完全沒有數據,需要從其他副本上拷貝數據。如果 secondary 副本完全沒有數據,則常見的做法是直接拷貝 primary 副本的數據,這種方法往往比回放日志追更新進度的方法快很多。但拷貝數據時 primary 副本需要能夠繼續提供更新服務,這就要求 primary 副本支持快照(snapshot)功能。即對某一刻的副本數據形成快照,然后拷貝快照,拷貝完成后使用回放日志的方式追快照形成后的更新操作。

3. 去中心化副本控制協議

去中心化副本控制是另一類較為復雜的副本控制協議。與中心化副本系統協議最大的不同是,去中心化副本控制協議沒有中心節點,協議中所有的節點都是完全對等的,節點之間通過平等協商達到一致。從而去中心化協議沒有因為中心化節點異常而帶來的停服務等問題。

  • 去中心化協議的最大的缺點是協議過程通常比較復雜。尤其當去中心化協議需要實現強一致性時,協議流程變得復雜且不容易理解。由于流程的復雜,去中心化協議的效率或者性能一般也較中心化協議低。

  • Paxos 是唯一在工程中得到應用的強一致性去中心化副本控制協議。

4. 工程投影

  • GFS 中的 Primary-Secondary 協議。GFS 系統的副本控制協議是典型的 Primary-Secondary 型協議,Primary 副本由 Master 指定,Primary 副本決定并發更新操作的順序。

  • PNUTS 中的 Primary-Secondary 協議。PNUTS 的副本控制協議也是典型的 primary-secondary 型協議。Primary 副本負責將更新操作向YMB 中提交,當更新記錄寫入 YMB 則認為更新成功。YMB 本身是一個分布式的消息發布、訂閱系統,其具有多副本、高可用、跨地域等特性。

  • Niobe 中的 Primary-Secondary 協議。Niobe 協議又是一個典型的 primary-secondary 型協議。Niobe 協議中,primary 信息由 GSM 模塊維護,更新操作由 primary 副本同步到 secondary 副本。

  • Dynamo/Cassandra 的去中心化副本控制協議。Dynamo / Cassandra 使用基于一致性哈希的去中心化協議。雖然 Dynamo 嘗試通過引入 Quorum機制和 vector clock 機制解決讀取數據的一致性問題,但其一致性模型依舊是一個較大的問題。

  • Chubby/Zookeeper 的副本控制協議。Chubby[13]和 Zookeeper 使用了基于 Paxos 的去中心化協議選出 primary 節點,但完成 primary節點的選舉后,這兩個系統都轉為中心化的副本控制協議,即由 primary 節點負責同步更新操作到secondary 節點。

  • Megastore 的副本控制協議。雖然都使用了 Paxos 協議,但與 Chubby 和 Zookeeper 不同的是,Megastore 中每次數據更新操作都基于一個改進的 Paxos 協議的實例,而不是利用 paxos 協議先選出 primary 后,再轉為中心化的primary-secondary 方式。

  • 其他系統的副本控制協議。Mola*/Armor*和 Big Pipe*也無一例外的使用了 Primary-secondary 協議控制副本。

參考:《分布式系統原理介紹》 - 劉杰

總結

以上是生活随笔為你收集整理的分布式系统原理 之2 基本副本协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。