paxos運用場景看懂了一些

paxos算法之前就聽說過,一直知道是個高大上的算法,但是一直都沒看懂用在什麼地方.

今天看了一些,懂了一點點,在這裏做個記錄.

算法的內容大概寫一下(一些術語需要看看原文):

1.準備(prepare):Proposer首先選擇一個提議序號n給其他的acceptor節點發送prepaer消息.Acceptor收到prepaer消息後,如果提議的序號大於他已經回覆的所有prepare消息,則acceptor將自己上次接受的提議回覆給proposer,並承諾不再回復小於n的提議.

2.批准(accept):Proposer收到了acceptor中的多數派對prepare的回覆後,就進入批准階段.如果在之前的prepaer階段acceptor回覆了上次接受的提議,那麼proposer選擇其中序號最大的提議值發給acceptor批准;否則,proposer生成一個新的提議值發給acceptor批准.Acceptor在不違揹他之前在prepare階段的承諾前提下,接受這個請求

3.確認(acknowledge):如果超過一般的acceptor接受,提議值生效.Proposer發送acknowledge消息通知所有acceptor提議生效(自己的理解應該是通知learner,去學習acceptor通過的這次決議,學習成功則完成這一次決議的提交.)


以前一直不知道這個算法的具體用途,今天可能理解到了一些,如有不對請不吝指正.該算法時保證數據的一致性的,特別是有多副本的情況下.舉一個列子,一個分佈式存儲系統中,存儲的副本數量爲N,在寫入操作時(流程類似GFS),需要選擇一個主副本,然後主副本需要將寫入的內容推送到其他從副本中去,只有大多數副本寫成功,纔會返回成功.那麼如果出現兩個寫操作同時寫同一個內容,那麼就會出現不一致,因爲兩個寫操作可能選擇了不同的副本作爲主副本,那麼這兩個住副本同時去向其他從副本推送修改的內容,就會出現不一致,所以paxos算法就是解決類似這樣的問題.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章