分布式理论:CAP理论
2019獨角獸企業重金招聘Python工程師標準>>>
一、CAP理論原理
1、CAP理論介紹
2000年7月,加州大學伯克利分校的Eric Brewer教授在ACM PODC會議上提出CAP猜想。2年后,麻省理工學院的Seth Gilbert和Nancy Lynch從理論上證明了CAP。之后,CAP理論正式成為分布式計算領域的公認定理。
CAP理論:
一個分布式系統最多只能同時滿足一致性(Consistency)、可用性(Availability)和分區容錯性(Partition tolerance)這三項中的兩項。
2、CAP理論解釋
C:Consistency一致性
一致性指“all nodes see the same data at the same time”,即更新操作成功并返回客戶端完成后,所有節點在同一時間的數據完全一致。
A: Availability可用性
可用性指“Reads and writes always succeed”,即服務一直可用,而且是正常響應時間。
P: Partition tolerance分區容錯性
分區容錯性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系統在遇到某節點或網絡分區故障的時候,仍然能夠對外提供滿足一致性和可用性的服務。
二、CAP使用權衡
1、保留CA,放棄P
如果想避免分區容錯性問題的發生,一種做法是將所有的數據(與事務相關的)都放在一臺機器上。雖然無法100%保證系統不會出錯,但不會碰到由分區帶來的負面效果。當然這個選擇會嚴重的影響系統的擴展性。
作為一個分布式系統,放棄P,即相當于放棄了分布式,一旦并發性很高,單機服務根本不能承受壓力。
像很多銀行服務,確確實實就是舍棄了P,只用單臺小型機+ORACLE保證服務可用性。
2、保留CP,放棄A
相對于放棄“分區容錯性“來說,其反面就是放棄可用性。一旦遇到分區容錯故障,那么受到影響的服務需要等待一定的時間,因此在等待期間系統無法對外提供服務。
作為分布式系統,有分區服務發生問題很有可能,如果因為某些服務不能用,導致整個服務都不能用,這個根本不是好的分布式系統。
3、保留AP,舍棄C
這里所說的放棄一致性,并不是完全放棄數據一致性,而是放棄數據的強一致性。即放棄了同一時刻的數據一致性,而保留數據的最終一致性。
以網絡購物為例,對只剩下一件庫存的商品,如果同時接受到了兩份訂單,那么較晚的訂單將被告知商品告罄。
通常情況下,很多分布式服務系統都是采用該方案,保證可用性性,分布式服務,因為某些分區服務發生問題,先容忍,最終通過一些折中的方法達到最終數據一致性。
轉載于:https://my.oschina.net/haoran100/blog/712549
總結
以上是生活随笔為你收集整理的分布式理论:CAP理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习承诺和目标
- 下一篇: 【强烈推荐】如何给TortoiseGit