偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Paxos、Raft不是一致性算法/協(xié)議?

網(wǎng)絡(luò) 通信技術(shù) 算法
作為互聯(lián)網(wǎng)中的一員,我們時(shí)常沉浸在“分布式”的氛圍當(dāng)中——高可用、高可靠、高性能等等詞匯隨處可見,CAP、BASE、2PC、Paxos、Raft等等名詞也能信手捏來(lái)。

 作為互聯(lián)網(wǎng)中的一員,我們時(shí)常沉浸在“分布式”的氛圍當(dāng)中——高可用、高可靠、高性能等等詞匯隨處可見,CAP、BASE、2PC、Paxos、Raft等等名詞也能信手捏來(lái)。不過,有些詞在我們“并不嚴(yán)謹(jǐn)”的傳播中逐漸被誤用了,或者說含糊不清了。今天,我們來(lái)簡(jiǎn)單聊聊“Consistency”這個(gè)詞,即一致性。

[[318778]]

Paxos、Raft等通常被誤稱為“一致性算法”。但是“一致性(Consistency)”和“共識(shí)(Consensus)”并不是同一個(gè)概念。Paxos、Raft等其實(shí)都是共識(shí)(Consensus)算法。

Leslie Lamport于1998年在ACM Transactions on Computer Systems上發(fā)表了一篇《The Part-Time Parliament》[1]的文章,這是Paxos算法第一次公開發(fā)表。但是發(fā)表之后,很多人還是覺得原來(lái)那篇太難理解了,之后Lamport又寫了一篇《Paxos Made Simple》[2],當(dāng)我們想要學(xué)習(xí)一下Paxos的時(shí)候,可以直接看看這篇。

回到正題,我們?cè)凇禤axos Made Simple》中搜索“Consistency”一詞,如下圖所示,其實(shí)是毫無(wú)匹配結(jié)果的。

 

反觀,我們搜索“Consensus”一詞的時(shí)候,卻出現(xiàn)了很多匹配項(xiàng)。

 

也就是說,Paxos論文通篇提都沒提Consistency一詞,何來(lái)的“Paxos is a consistency algorithm”的說法。

與此類似的是,在Raft論文《In Search of an Understandable Consensus Algorithm (Extended Version)》[3]中開頭就對(duì)Raft給出了明確的定義:Raft is a consensus algorithm....,注意這里是consensus,而不是consistency。

 

這時(shí)候我們不妨再打開字典。乍眼一看,字典中Consistency和Consenus譯意接近,都有“一致”的含義,但是仔細(xì)深究又有所不同:Consistency:一致性,Consensus:共識(shí)、一致的意見。

 

從專業(yè)的角度來(lái)講,我們通常所說的一致性(Consistency)在分布式系統(tǒng)中指的是對(duì)于同一個(gè)數(shù)據(jù)的多個(gè)副本,其對(duì)外表現(xiàn)的數(shù)據(jù)一致性,如強(qiáng)一致性、順序一致性、最終一致性等,都是用來(lái)描述副本問題中的一致性的。而共識(shí)(Consensus)則不同,簡(jiǎn)單來(lái)說,共識(shí)問題是要經(jīng)過某種算法使多個(gè)節(jié)點(diǎn)達(dá)成相同狀態(tài)的一個(gè)過程。一致性強(qiáng)調(diào)結(jié)果,共識(shí)強(qiáng)調(diào)過程。

《分布式系統(tǒng)概念與設(shè)計(jì)》一書中對(duì)共識(shí)問題進(jìn)行了如下定義:為達(dá)到共識(shí),每個(gè)進(jìn)程 pi 最初處于未決(undecided)狀態(tài),并且提議集合D中的一個(gè)值 vi 。進(jìn)程之間互相通信,交換值。然后,每個(gè)進(jìn)程設(shè)置一個(gè)決定變量(decision variable)di 的值。在這種情況下,它進(jìn)入決定(decided)狀態(tài)。在此狀態(tài)下,他不再改變di。

下圖中給出了參與一個(gè)共識(shí)算法的3個(gè)進(jìn)程。兩個(gè)進(jìn)程提議“繼續(xù)”, 第三個(gè)進(jìn)程提議“放棄”但隨后崩潰。保持正確的兩個(gè)進(jìn)程都決定“繼續(xù)”。(其中i = 1, 2, ……, N; j = 1, 2, ……, N。)

 

共識(shí)算法的要求是在每次執(zhí)行中滿足以下條件:

  • 終止性:每個(gè)正確進(jìn)程最終設(shè)置它的決定變量。
  • 協(xié)定性:所有正確進(jìn)程的決定值都相同,即如果 pi 和 pj 是正確的并且已進(jìn)入決定狀態(tài),那么 di = dj。
  • 完整性:如果正確的進(jìn)程都提議同一個(gè)值,那么處于決定狀態(tài)的任何正確進(jìn)程已選擇了該值。

共識(shí)問題中所有的節(jié)點(diǎn)要最終達(dá)成共識(shí),由于最終目標(biāo)是所有節(jié)點(diǎn)都要達(dá)成一致,所以根本不存在一致性強(qiáng)弱之分。所以,以后我們看到“Paxos是一個(gè)強(qiáng)一致性算法”、“Raft是一個(gè)強(qiáng)一致性協(xié)議”等類似說法的時(shí)候,我們更要以一種“審視”的眼光去看待后面的內(nèi)容。

在我們大多數(shù)人的大多數(shù)工作內(nèi)容中,一致性(Consistency)與共識(shí)(Consensus)的差別其實(shí)無(wú)關(guān)痛癢。但是如果我們想抬高一個(gè)維度,深入的去研究一下分布式領(lǐng)域的內(nèi)容,那么這些最基礎(chǔ)的概念如果區(qū)分不清楚的話,會(huì)對(duì)后面的學(xué)習(xí)過程產(chǎn)生很大的阻礙。

越是相近的詞匯,越要清楚的區(qū)分。就算是同一個(gè)單詞,也會(huì)有不同的含義解析,比如CAP和ACID中的C都是Consistency的縮寫,但這兩者在各自場(chǎng)景下的含義也并不相同。

  • ACID的C指的是事務(wù)中的一致性,在一系列對(duì)數(shù)據(jù)修改的操作中,保證數(shù)據(jù)的正確性。即數(shù)據(jù)在事務(wù)期間的多個(gè)操作中,數(shù)據(jù)不會(huì)憑空的消失或增加,數(shù)據(jù)的每一個(gè)增刪改操作都是有因果關(guān)系的。比如用戶A向用戶B轉(zhuǎn)了200塊錢,不會(huì)出現(xiàn)用戶A扣了款,而用戶B沒有收到的情況。
  • 在分布式環(huán)境中,多服務(wù)之間的復(fù)制是異步,需要一定耗時(shí),不會(huì)瞬間完成。在某個(gè)服務(wù)節(jié)點(diǎn)的數(shù)據(jù)修改之后,到同步到其它服務(wù)節(jié)點(diǎn)之間存在一定的時(shí)間間隔,如果在這個(gè)間隔內(nèi)有并發(fā)讀請(qǐng)求過來(lái),而這些請(qǐng)求又負(fù)載均衡到多個(gè)節(jié)點(diǎn),可能會(huì)出現(xiàn)從多個(gè)節(jié)點(diǎn)數(shù)據(jù)不一致的情況,因?yàn)檎?qǐng)求有可能會(huì)落到還沒完成數(shù)據(jù)同步的節(jié)點(diǎn)上。CAP中的C就是為了做到在分布式環(huán)境中讀取的數(shù)據(jù)是一致的。

總的來(lái)說,ACID的C著重強(qiáng)調(diào)單數(shù)據(jù)庫(kù)事務(wù)操作時(shí),要保證數(shù)據(jù)的完整和正確性,而CAP理論中的C強(qiáng)調(diào)的是對(duì)一個(gè)數(shù)據(jù)多個(gè)備份的讀寫一致性。

對(duì)于今天的知識(shí)點(diǎn)有什么想說的嘛?不妨在留言區(qū)留下你的想法。

參考資料http://lamport.azurewebsites.net/pubs/lamport-paxos.pdf

http://lamport.azurewebsites.net/pubs/paxos-simple.pdf

https://raft.github.io/raft.pdf

淺談 CAP 和 Paxos 共識(shí)算法

被誤用的“一致性”

分布式共識(shí)(Consensus):Viewstamped Replication、Raft以及Paxos

責(zé)任編輯:武曉燕 來(lái)源: 朱小廝的博客
相關(guān)推薦

2022-06-07 12:08:10

Paxos算法

2021-08-13 07:56:13

Raft算法日志

2024-11-28 10:56:55

2024-01-11 08:13:49

Raft算法分布式

2021-02-05 08:00:48

哈希算法?機(jī)器

2024-05-27 10:42:55

2021-06-03 15:27:31

RaftSOFAJRaft

2022-03-22 09:54:22

Hash算法

2017-07-25 14:38:56

數(shù)據(jù)庫(kù)一致性非鎖定讀一致性鎖定讀

2024-10-16 09:53:07

2022-11-10 07:49:09

hash算法代碼

2019-10-11 23:27:19

分布式一致性算法開發(fā)

2020-07-20 08:30:37

算法哈希分布式系統(tǒng)

2021-07-27 08:57:10

算法一致性哈希哈希算法

2016-12-19 18:41:09

哈希算法Java數(shù)據(jù)

2022-12-14 08:23:30

2021-09-18 08:54:19

zookeeper一致性算法CAP

2022-05-05 08:32:29

NacosAP架構(gòu)

2021-02-02 12:40:50

哈希算法數(shù)據(jù)

2018-04-10 16:24:03

算法分布式一致性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)