分布式系统架构常识:CAP理论
轉載自?分布式系統架構常識:CAP理論
什么是CAP理論?
2000年7月,加州大學伯克利分校的Eric Brewer教授在ACM PODC會議上提出CAP猜想。2年后麻省理工學院的Seth Gilbert和NancyLynch從理論上證明了CAP,之后CAP理論正式成為分布式計算領域的公認定理。
CAP理論是由下面三個概念組成的,且在分布式系統中三者不能兼得,只能同時滿足兩種條件。
一致性(C)
All nodes see the same data at the same time
所有數據庫集群節點在同一時間點看到的數據完全一致,即所有節點能實時保持數據同步。
可用性(A)
Reads and writes always succeed
讀寫操作永遠是成功的。即服務一直是可用的,即使集群一部分節點故障,集群整體還能正常響應客戶端的讀寫請求。
分區容錯性(P)
The system continues to operate despite arbitrary message loss or failure of part of the system
盡管系統中有任意的信息丟失或故障,系統仍在繼續運行。以實際效果而言,分區相當于對通信的時限要求。系統如果不能在時限內達成數據一致性,就意味著發生了分區的情況,必須就當前操作在C和A之間做出選擇。
CAP權衡使用
1、保留CA,放棄P
如果想避免分區容錯性問題的發生,一種做法是將所有的數據(與事務相關的)都放在一臺機器上。雖然無法100%保證系統不會出錯,但不會碰到由分區帶來的負面效果。當然這個選擇會嚴重的影響系統的擴展性。
作為一個分布式系統,放棄P,即相當于放棄了分布式,一旦并發性很高,單機服務根本不能承受壓力。
像很多銀行服務,確確實實就是舍棄了P,只用單臺小型機+ORACLE保證服務可用性。
2、保留CP,放棄A
相對于放棄“分區容錯性“來說,其反面就是放棄可用性。一旦遇到分區容錯故障,那么受到影響的服務需要等待一定的時間,因此在等待期間系統無法對外提供服務。
作為分布式系統,有分區服務發生問題很有可能,如果因為某些服務不能用,導致整個服務都不能用,這個根本不是好的分布式系統。
3、保留AP,舍棄C
這里所說的放棄一致性,并不是完全放棄數據一致性,而是放棄數據的強一致性。即放棄了同一時刻的數據一致性,而保留數據的最終一致性。
以網絡購物為例,對只剩下一件庫存的商品,如果同時接受到了兩份訂單,那么較晚的訂單將被告知商品告罄。
通常情況下,很多分布式服務系統都是采用該方案,保證可用性性,分布式服務,因為某些分區服務發生問題,先容忍,最終通過一些折中的方法達到最終數據一致性。
總結
以上是生活随笔為你收集整理的分布式系统架构常识:CAP理论的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: SiteGround vs DreamH
- 下一篇: web地址怎么设置?
