分布式系統中的一致性協議之兩階段提交協議:兩階段提交協議是很常見的解決分布式事務的方式,他可以保證分布式事務中,要麼所有參與的程序都提交事務成功,要麼都取消事務,這樣做可以在分布式環境中保持acid中a(原子性)。
在兩階段提交協議中,包含了兩種角色:協調者與參與者。參與者就是實際處理事務的機器,而協調者就是其中一台單獨的處理分布式事務的機器。
該演算法分為兩個階段:
1.投票階段
2.提交階段
階段1:請求階段,或稱表決階段
在請求階段,協調者將通知事務參與者準備提交或取消事務,然後進入表決過程。在表決過程中,參與者將告知協調者自己的決策:同意(事務參與者本地作業執行成功)或取消(本地作業執行故障)。這裡的取消是指該參與者所在的機器沒有準備好,或者出現了故障。因此無法執行該事務。
階段2:提交階段
在該階段,協調者將基於第乙個階段的投票結果進行決策:提交或取消。當且僅當所有的參與者同意提交事務協調者才通知所有的參與者提交事務,否則協調者將通知所有的參與者取消事務。參與者在接收到協調者發來的訊息後將執行響應的操作。協調者如果發現有乙個投票是vote_abort,那麼將建立乙個global_abort通知所有的參與者終止該事務。如果都是vote_commit,那麼協調者將傳送乙個global_commit,告知所有的參與者執行該事務。
當然如果協調者傳送乙個global_commit資訊,a收到了,b沒收到,b可以根據a的狀態,自動將自己設定成commit狀態。同理可以根據其他的參與者的狀態設定自己的狀態為global_abort狀態。
但是如果q發現其他的節點都是處於ready狀態,並很長時間都沒有變化,說明協調者伺服器宕機了,這也就是該演算法可能會出現的問題,協調者的長時阻塞問題。解決該問題的方法就是設定超時機制,當時間超過了最長等待時間,設定該事務為abort狀態。
分布式系統中的一致性協議
本文詳細介紹目前分布式系統中常見的一些一致性協議 兩階段提交協議,三階段提交協議,向量時鐘,rwn協議,paxos協議,raft協議。下面就乙個個詳細講解下。一.兩階段提交協議 2pc 兩階段提交協議,簡稱2pc,是比較常用的解決分布式事務問題的方式,要麼所有參與程序都提交事務,要麼都取消事務,即實...
保證一致性嗎 分布式系統 一致性協議
一致性模型本質上是程序與資料儲存的約定,通過一致性模型我們可以理解和推理在分布式系統中資料複製需要考慮的問題和基本假設。那麼,一致性模型的具體實現有一些呢?本文會介紹一致性協議實現的主要思想和方法。一致性協議描述了特定一致性模型的實際實現。一致性模型就像是介面,而一致性協議就像是介面的具體實現。一致...
分布式一致性
分布式一致性是指在分布式環境中對某個副本資料進行更新操作時,必須確保其他副本也會更新,避免不同副本資料不一致。分布式系統乙個重要的問題時解決資料複製,一是為了增加系統的可用性防止單點故障,二是提高系統可用性,通過負載聚恆,使分布在不同位置的資料副本能夠提供服務。理想狀態下,當然希望分布式系統能夠實現...