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通過的這次決議,學習成功則完成這一次決議的提交.)