1. 程式人生 > >《大數據日知錄》讀書筆記-ch2數據復制與一致性

《大數據日知錄》讀書筆記-ch2數據復制與一致性

replica 綁定 原子性 lpad 崩潰 配置 定性 atomic ide

CAP理論:Consistency,Availability,Partition tolerance

技術分享圖片

對於一個分布式數據系統,CAP三要素不可兼得,至多實現其二。要麽AP,要麽CP,不存在CAP。分布式系統往往要求必須滿足P。

技術分享圖片

傳統關系數據庫選擇CA,NoSQL更關註AP。

CAP Reloaded:

技術分享圖片

關系數據庫ACID原則:Atomicity,Consistency,Isolation,Durability;更強調數據一致性

NoSQL系統BASE原則:Basically Available,Soft state,Eventual consistency;更強調數據可用性

冪等性(Idempotent):

技術分享圖片

一致性模型分類:

技術分享圖片

技術分享圖片

技術分享圖片

副本更新策略:

延時和一致性做權衡

策略1-同時更新:

A 同一時刻的兩個寫請求,無法保證各副本操作順序一致

B 通過某種一致性協議確定執行順序

策略2-主從更新:

一個主副本(master replica),多個從副本(slave replica)。寫主副本,主副本轉發寫給從副本,主副本決定寫順序。

A 同步方式:主副本等待所有從副本寫完,視作操作完成。請求延時大

B 異步方式:主副本通知從副本寫之前視作完成。應對主副本未通知前崩潰的情形:指定存儲記錄此次寫操作(比如log文件)

1.讀請求都轉發給主副本:代價是高延時。eg:Chubby

2.所有副本可讀:代價是弱一致。eg:PNUTS,Zookeeper

C 同異步混合:主副本同步寫部分從副本,視作完成,異步寫其他從副本

1.讀的數據必須來自同步寫的節點:強一致,高延遲

2.同1相反

策略3-任意節點更新:

A 同步通知:強一致,高延時

B 異步通知:弱一致,低延時

一致性協議:

兩階段提交(two-phrase commit,2PC)協議:

解決分布式事務問題:實現ACID中原子性(Atomicity)。eg:Raft一致性協議用其保證信息更新原子性。

技術分享圖片

技術分享圖片

存在3個阻塞態:協調者的WAIT態,參與者的INIT態、READY態

解決阻塞問題:

1 超時判斷:協調者WAIT態若超時發Global-abort,參與者INIT態超時發Vote-abort

2 參與者互詢:參與者READY態超時不能abort事務,因為不確定協調者下發表決信息,所以需要互詢。

參與者P問參與者Q:

if Q=COMMIT then P:=COMMIT

if Q=ABORT then P:=ABORT

if Q=INIT then P:=ABORT

if Q=READY then P問其他參與者;最壞情形是其他參與者也都出於READY態,即長時阻塞(還好較少發生)

解決長時阻塞:協調者和參與者將自身狀態寫入本地log,崩潰重啟根據log恢復。

向量時鐘(vector clock)協議:

將時間戳和事件綁定進而判定事件因果依賴關系。

規則:

技術分享圖片

判斷因果關系:

技術分享圖片

例子:

技術分享圖片

技術分享圖片

Dynamo使用向量時鐘管理數據版本。

技術分享圖片

如有數據一致性沖突經向量時鐘無法判定,則交給客戶端(應用端)判定。

RWN協議:

技術分享圖片

技術分享圖片

R或W越大延遲越高。

可根據實際情況配置R和W的數值。

必須結合向量時鐘配合達到強一致性。

Paxos協議:

1. 副本狀態機模型(replicated state machines)

典型實現:Log副本方式

技術分享圖片

一致性協議作用是保證各個Log副本數據的一致性:一致性模塊(consensus module)

技術分享圖片

2. Paxos基本概念

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

3. Paxos協議機制

技術分享圖片

技術分享圖片

技術分享圖片

學習者獲取倡議:

技術分享圖片

技術分享圖片

Raft協議:

目標:可理解性,實現實際系統的確定性

技術分享圖片

基本概念

技術分享圖片

技術分享圖片

1. 領導者選舉

技術分享圖片

技術分享圖片

2. Log復制

技術分享圖片

(註:項目即item)

技術分享圖片

技術分享圖片

3. 安全性

技術分享圖片

技術分享圖片

Zookeeper Raft Chubby PNUTS Dynamo Cassandra Riak
介紹 Amazon 模仿Dynamo
操作 idempotent idempotent
副本更新 master-slave read master-slave async: read master master-slave async: read all master-slave sync+async master-slave sync+async master-slave sync+async
expection: random expection: random expection: random
一致性協議 vector clock+RWN

《大數據日知錄》讀書筆記-ch2數據復制與一致性