為什麼CAP理論在捨棄P的情況下,可以有完美的CA?

時間 2021-05-30 13:34:20

1樓:任貴傑

分布式系統是通過網路互聯的,不保證P很難叫分布式系統,所以P必然被實現。剩下CA選擇其一。

埃里克·布魯爾在前後兩版文章中的解釋有些差別。簡單介紹一下P和兩版的差別應該更容易理解。最後再說明原因。

分割槽容忍性(Partition Tolerance)

第一版解釋:

System continues to work despite message loss or partial failure.

翻譯:出現訊息丟失或者分割槽錯誤時系統能夠繼續執行。

第二版解釋:

The system will continue to function when network partitions occur.

翻譯:當出現網路分割槽後,系統能夠繼續「履行職責」。

主要差異點表現在:

第一版描述分割槽用的是 message loss or partial failure,第二版直接用 network partitions。

對比兩版解釋,第一版是直接說原因,即 message loss 造成了分割槽,但 message loss 的定義有點狹隘,因為通常我們說的 message loss,只是網路故障中的一種;第二版直接說現象,即發生了分割槽現象,不管是什麼原因,可能是丟包,也可能是連線中斷,還可能是擁塞,只要導致了網路分割槽,就通通算在裡面。

雖然 CAP 理論定義是三個要素中只能取兩個,但放到分布式環境下來思考,我們會發現必須選擇P要素,因為網路本身無法做到 100% 可靠,有可能出故障,所以分割槽是乙個必然的現象。如果我們選擇了 CA 而放棄了 P,那麼當發生分割槽現象時,為了保證 C,系統需要禁止寫入,當有寫入請求時,系統返回 error(例如,當前系統不允許寫入),這又和 A 衝突了,因為 A 要求返回 no error 和 no timeout。因此,分布式系統理論上不可能選擇 CA 架構,只能選擇 CP 或者 AP 架構。

2樓:

Atomic Consistency要求所有concurrent requests和按某個序列執行requests結果一致。這個序列要求與request發生的time有關且最終結果要符合因果關係。每個request的時間屬性可以理解成request開始的時間Tstart和結束時間Tend。

樓主所說的request發生順序是符合Atomic Consistency定義的。因為Read的Tstart在Write的Tstart和Tend之間,這種情況下可以認為邏輯上Read先執行。

3樓:並非如此

"網上很多資料說在沒有分割槽的情況下,分布式系統可以提供完美的CA", 這說明你看得資料都是錯誤的,所以網路上獲取知識,一定要加上自己的理解和判斷,不要輕易的相信。

言歸正傳, 分布式是以P為基礎的,只要是分布式系統,P必然存在,那麼你可選的就是在CA中尋找平衡。

單機服務,是不是就是所謂的捨棄P, 實現了完美的CA,完美這個詞本身就是不存在的, 單機中也可能多點非同步處理,所以P看的不是物理分布而是系統是否存在多點協作,如果只是單點,資料全同步,那麼也就實現的強一致性,但是是否可用,這個要看你是怎麼定義可用性的,因為絕對的100%可用(任何情況下不出問題)是不存在的,所謂的可用,都是我們通常對容錯率和響應時間的在某一領域內的乙個最低可承受的閾值。 所以對於CAP理論,需要理解的僅僅他們之間相互制衡的關係和原因即可,然後再看怎麼能實現你所需要的系統,而不必糾結於,為什麼只能選擇其中之二,這個並不嚴謹的論斷。

4樓:ix2.cn

不管p的時候,確實可以實現完全的c和a,你說的節點問題,屬於你沒搞懂分布式的實現邏輯。資料沒同步到的時候,你是無法取到哪個資料的,所以你沒法讀,讀請求會被非同步掉或者掛起。在分布式系統中是有鎖或者佇列的存在的。

還有你這種情況是有mesi協議這種類似協議會鎖住你的讀請求的。

額,補充一下。絕對一樣上的完美的c,a和p都是不存在的。絕對完美的c要求儲存的資料每時每刻都是正確的狀態,所有變化都是一瞬間完成的,絕對完美的a,就是系統每時每刻都可以響應使用者隨時發起的請求,那麼就是等價於計算機處理的速度無窮大,這個明顯不可能。

絕對完美的p,要求網路傳輸的時候用時為0,每時每刻都不存在邏輯意義上的網路中斷。這裡延遲可以理解為在某個極小的時間段網路中斷。所以不抬槓的說,傳統的cs和bs的mis系統就是乙個ca系統。

客戶端處理介面邏輯,伺服器處理儲存和業務計算邏輯。但是抬槓的說呢,保證c趨近1,當a趨近於1的時候,p趨近於0,系統對網路延遲的容忍度就越低。

1080p螢幕這麼模糊,為什麼1080p在筆記本端還是主流,還沒被淘汰?

雪色羽 760p和1080p差距有點大,但是1080p和2k差距沒那麼大,我顯示器2k的,但是我不覺得1080p有多麼難看,前者不過更精細一點,只有27寸的1080p才看到明顯顆粒感 15英吋用1080p不是很正常嘛,如何看到顆粒感,難道要貼近螢幕嗎,可能我眼睛先瞎。建議出8k的時候用光學顯微鏡,出...

在擁有iPhone 6 6P的情況下如何提高iPad的使用率?

這取決於你的主觀意願。你可以給自己心裡暗示,比如 iPad速度更快 iPad閱讀上網遊戲更舒服 它是一台大屏iPhone,比6 Plus還要大 如果你覺得沒有效果 那就不要用iPad就行了嘛 大屏iPhone會使人們更加理性的選購iPad和使用iPad。如果你需要乙個大屏看電影,看書,玩遊戲,去買大...

為什麼Intel和AMD不像蘋果那樣在PC上搞SoC?

幸福渠水到俺村 SoC要看場合,不是無腦搞SoC就好的。對於台式電腦來說,它的內部空間很大。沒有必要做SoC,只需要把高速I O和記憶體控制器與CPU整合在一起。不至於讓距離拖慢速度即可。其他低速I O,例如南橋晶元,各種I O控制器,GPU等。在製造工藝成本越來越高的今天,全整合反而會變得更貴,低...