Zookeeper 與 Kafka (1) : 分布式一致性原理與實踐

  1. 多線程的最大副作用: 并發.
  • 如果多個邏輯控制流在時間上發生了重疊, 就會產生并發.
  • 邏輯控制流是指一次程序操作.
    • 如讀取或者更新內存變量的值.
    • 更新的并發性: 多線程同時更新內存值而產生的并發.
  • 分布式一致性
    • 目標:
      • 增加系統可用性, 防止因單點故障引起的系統不可用.
      • 提高系統的整體性能, 通過負載均衡, 讓分布在不同地方的數據副本都能為用戶提供服務.
    • 缺陷:
      • 為了解決復制延遲, 阻塞寫入動作直到所有的復制完成, 會嚴重影響寫入的性能.
      • 在不影響系統運行性能前提下,保證數據一致性是不可能的.
      • 一致性的級別:
        • 強一致性. 最好的用戶體驗, 但是會影響性能.
        • 弱一致性. 盡可能快地但不保證數據一致狀態.
          • 分為會話一致性和用戶一致性.
        • 最終一致性. 保證一定時間內,達到數據一致狀態.
          • 屬于弱一致性的特例. 是目前最被廣泛接收的.
  • 分布式架構
    • 常見問題
      • 通信異常,節點故障.
      • 網絡分區:
        • 部分節點的網絡延遲過大, 導致只有部分節點間能夠正常通信的現象.
      • 請求與響應的三態: 成功,失敗,超時.
    • ACID.
      • Atomicity: 事務中的所有操作只能全部執行或者全部不執行.
      • Consistency: 事務的執行不能破壞?數據庫中數據的完整性和一致性.
        • 當?數據庫在一些事務尚未完成時發生故障, 會導致部分修改寫入, 而處于不一致狀態.
      • Isolation: 并發環境中,事物相互隔離.
        • Read Uncommitted.允許臟讀.
        • Read Committed. 允許不可重復讀(一次事物多次讀取相同值時, 原始讀取不可重復).
        • Repeatable Read(鎖定?行). 事務過程中多次讀取同一數據,其值和開始時是一致的. 可能有幻影數據(鎖定?行范圍).
        • Serializable. 所有事務串行執行,不?支持并發.
      • Durability: 事務成功結束后,其對?數據庫的更新要被永久保存下來.
    • 分布式事務
      • 由多個分布式的操作(子事務)序列組成, 嵌套型的事務. 需要兼顧可用性和一致性.
      • CAP. 最多只能同時滿足其中的兩項. 分區容錯性是必須的,平衡的是Consistency和Availability.
        • Consistency. 數據在多個?副本間的一致性.
        • Availability. 用戶的每個請求總能在有限的時間內返回結果.
        • Partition tolerance. 遇到任何網絡分區(子網絡)故障時,對外提供滿足一致性和可用性的服務.除非整個網絡故障.
      • BASE 理論. 既然無法達到?強一致性, 那么采用適當的方式來達到最終一致性.
        • Basically Available. 出現不可預知的故障時, 允許損失部分可用性.
          • 造成響應時間上的損失, 功能上的損失.
        • Soft state. 允許系統中的數據存在中間狀態.
          • 即數據副本間的同步存在延遲.
        • Eventually Consistent. 它包含五種變種:
          • Causal consistency. 更新進程完成后通知進程B,進程B拿到的是更新后的數據.
          • Read your writes. 進程更新數據后,自己總是能讀取到更新過的新值.
          • Session consistency. 在同一會話中實現read your writes的一致性.
          • Monotonic read consistency. 進程讀取某數據項后,后續的數據訪問不能返回舊值.
          • Monotonic write consistency. 保證來自同一進程的寫操作順序地執行.
        • 核心: 犧牲強一致性來獲得可用性.
  • 一致性協議
    • 跨越多個分布式節點的事務操作,需引入協調器(Coordinator)來調度,節點稱為參與者(Participant).
      • Coordinator 調度Participan t的行為, 并最終決定是否要把事務真正進行?提交.
    • 兩階段提交協議(2PC, Two-Phase Commit).
      • 關系型?數據庫的通用做法, 屬于強一致性算法.
      • 階段:
        • 提交事務請求(投票); 要么返回失敗,要么本地執行事務,寫本地的redo/undo日志,但不提交.
        • 執行事務提交(執行).
        • 采用先嘗試后提交的方式.
      • 缺點:
        1. 同步阻塞(participant 會一直等待它人的響應/ 或participant 占用公共資源時);
        • 單點問題(coordinator);
        • 數據不一致性(階段二如果有節點沒有收到提交消息時, coordinator 就宕機時);
        • 太過保守(coordinate 只能依靠超時來處理長時間無響應的participant).
        • 當coordinator 發送了commit 后宕機, 且唯一接收到commit 消息的participant 也宕機后, 重新選舉的coordinator 也無法知曉是否應該commit.
    • 三階段提交協議(3PC)
      • 階段:
        • CanCommit, PreCommit, Do Commit.
        • participant 在PreCommit 階段執行事務操作,并將Undo 和Redo 信息記錄到事務log 中.
      • 改動點:
        • 在協調者和參與者之間引入超時機制.
        • 新插入的準備階段, 保證了在最后提交階段之前, 各參與節點的狀態是一致的.
      • 缺點:
        • 進入Do commit階段,參與者在等待(協調者的提交/中斷指令)超時后,會繼續進行事務提交. 可能導致數據的不一致性.
      • 優勢:
        • 降低了參與者的阻塞范圍, 且在單點故障后繼續達成一致性.
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容

  • 本文歡迎轉載,轉載請注明原文鏈接,并附作者個人信息李艷鵬。 1 背景 一致性是一個抽象的、具有多重含義的計算機術語...
    581f548ef0ec閱讀 43,587評論 28 295
  • 分布式系統面臨的第一個問題就是數據分布,即將數據均勻地分布到多個存儲節點。另外,為了保證可靠性和可用性,需要將數據...
    olostin閱讀 4,611評論 2 26
  • 本文由廈門大學計算機系教師林子雨翻譯,翻譯質量很高,本人只對極少數翻譯得不太恰當的地方進行了修改。 【摘要】:Sp...
    Jeffbond閱讀 3,964評論 1 42
  • 我是一名普通的大學畢業生,現在算起來剛好整畢業三個月,因為學的是土木專業,理所當然的進入了施工這一偉大而又苦逼的行...
    愛吃肉的和尚閱讀 262評論 0 0
  • 最近S小姐失戀了,然而我卻不知道該怎么辦 S小姐是我最好的朋友,她陪我度過了我的青蔥歲月,可對于S小姐的前任,我只...
    白菜沫君閱讀 375評論 0 1