weblab-tw / ddia-study-group

Designing Data-Intensive Applications Study Group
36 stars 5 forks source link

第九章:學習要點 #100

Open kylemocode opened 2 years ago

kylemocode commented 2 years ago
0x171-0 commented 2 years ago

線性一致

2PC

Parkerhiphop commented 2 years ago

線性一致性(一種流行的一致性模型):其目標是使多副本資料看起來好像只有一個副本一樣,並使其上所有操作都原子性地生效。

因果性,因果性對系統中的事件施加了順序(什麼發生在什麼之前,基於因與果)。

為何需要共識?

共識:所有節點一致同意所做決定,且這一決定不可撤銷

如果你只有一個節點,或者你願意將決策的權能分配給單個節點,所有這些事都很簡單。

但變更領導者的共識演算法仍然必須 -> 使用「容錯的共識演算法與容錯的共識系統」

at7211 commented 2 years ago
jxiu0129 commented 2 years ago
taco0929 commented 2 years ago

一致性與共識

構建容錯系統的最好方法,是找到一些帶有實用保證的通用抽象,實現一次,然後讓應用依賴這些保證。 i.e.: 事務

一致性保證

複製延遲問題 收斂為弱保證:不能及時解決複製延遲問題

線性一致性

新鮮度保證:系統保障讀取到的值為最新的值 寄存器 應用: 鎖定和領導選舉 約束和唯一性保證 跨信道的時序依賴 (i.e.圖片上傳與發送) 複製方法與線性一致性 單主複製 — 可能線性一致 共識算法 — 線性一致 多主複製 — 非線性一致 無主複製 — 取決於法定人數配置與異步網路延遲 代價 i.e. 網路中斷的可能性造成單主複製無法寫入 CAP定理:分布式系統不可能同時滿足以下三點 一致性 可用性 分區容錯性

順序保證

因果順序不是全序 — 不能比較兩者之間的因果順序 完全線性一致性系統中沒有併發 線性一致性強於因果一致性,但因果一致性較線性一致性能保證更好的性能 全序廣播 可靠交付:消息不會被丟失 全序交付:消息以相同的順序傳遞給節點 i.e. 設定追加日誌

分佈式系統的共識

節點能達成共識仰賴:領導選舉、原子提交 兩階段提交:跨多節點的事物提交 — 仰賴協調者 XA事務:使用XA API查詢操作是否為分布式事務的一部份 懷疑時持有鎖

容錯共識

一致同意 — 沒有兩個節點的決定為不同 完整性 — 沒有節點可以決定兩次 終止 — 尤為崩潰的節點決定最終值

AK4codee commented 2 years ago

一致性保證

事務隔離主要是為了 避免由於同時執行事務而導致的競爭狀態,而分散式一致性主要關於 在面對延遲和故障時如何協調副本間的狀態。

線性一致性(原子一致性、強一致性)

實現線性一致的系統

順序保證

全序廣播

分散式事務與共識

原子提交與兩階段提交

當應用準備提交時,協調者開始階段 1 :它傳送一個 準備(prepare) 請求到每個節點,詢問它們是否能夠提交。

容錯共識

samwu4166 commented 2 years ago

一致性保證

NOTE:

顺序一致性中进程只关心大家认同的顺序一样就行,不需要与全局时钟一致,线性就更严格,从这种偏序(partial order)要达到全序(total order)

約束和唯一性保證

使用者名稱或電子郵件地址必須唯一標識一個使用者

不同的複製方法達成線性一致的比較:

蘭伯特時間戳 (計數器,節點 ID)$(counter, node ID)$。兩個節點有時可能具有相同的計數器值,但透過在時間戳中包含節點 ID,每個時間戳都是唯一的。