《數據密集型應用》讀書筆記——線性一致性

線性一致性與可串行化

線性一致性

線性一致性(線性化)爲分佈式系統提供了數據單一副本的假象,也就是對外表現看起來就像只有1個數據副本,並且所有操作都是原子發生的。

可串行化

可串行化爲事務的隔離性保證,特別是涉及多個對象讀寫的事務,可串行化保證了並行事務的執行和串行執行事務的結果一致

區別

線性一致性是針對單一對象的讀寫而言,可串行化是涉及多個對象讀寫的事務。

線性化與串行化不同,它不構成事務,因此不能完全保證併發寫的安全性。

數據庫可以同時提供串行化和線性化,如兩階段鎖便是可以同時提供串行化與線性化,而序列化的快照隔離不是線性化的。

從理論上講,隔離是假裝沒有併發。

線性一致性的使用場景

  • Leader 選舉
  • 分佈式鎖
  • 實現唯一約束
  • 時序依賴

全序廣播

全序廣播要求每個消息被傳遞一次,並且在所有節點上的順序一致。如果每一輪消息傳遞都採用共識算法,即能保證每個節點每一輪收到的消息一致,回顧共識算法的四個性質:

  • Uniform agreement

每個節點最終採納的提議是一致的,最終所有節點上消息的順序保證是一致的。

  • Integrity

每個節點只採納提議一次,不會重複採納,保證了消息不會重複處理。

  • Validity

被採納的值必須是由某個節點提議的,保證消息是真實有效的。

  • Termination

每個節點最終都會採納提議,保證消息傳遞的可靠性。

可以推導出,全序廣播等價於多輪共識算法,基於全序廣播可以實現線性一致性,因此基於多輪共識算法可以實現線性一致性。

其他

fencing 假設每次鎖服務在授予鎖或租約時,還會同時返回一個fencing令牌, 該令牌(數 字)每授授予一次就會遞增(例如,由鎖服務增加) 。然後,要求客戶端每次向存儲 系統發送寫請求時,都必須包 含 所持有的 fencing令牌。fencing (柵欄,隔離之意)

寫傾斜 可以將寫傾斜視爲一種更廣義的更新丟失問題。即如果兩個事務讀取 相 同的 一 組對 象,然後更新其中 一部分:不同的事務可能更新不同的對象,則可能發生寫傾斜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章