在2000年的分布式計算原則研討會(PODC)上募壕,計算機(jī)科學(xué)家埃里克.布魯爾針對分布式計算系統(tǒng)的一致性(Consistency)览徒、可用性(Availability)、分區(qū)容錯性(Partition-tolerant)提出了猜想。在2002年罩扇,他的猜想得到了來自麻省理工學(xué)院的兩位教授Nancy Lynch 和 Seth Gilbert的證明剿干,并被稱為CAP定理蜂怎。
CAP定理證實(shí)的是,在一個分布式計算系統(tǒng)中置尔,不可能同時滿足下面三個條件:
- 一致性(Consistency)
- 可用性(Availability)
- 分區(qū)容錯性(Partition-tolerant)
在分布式系統(tǒng)中杠步,一致性(Consistency)分為不同的類型。如果要求分布式系統(tǒng)的數(shù)據(jù)存儲層榜轿,在更新數(shù)據(jù)后幽歼,在后續(xù)的訪問中都能獲取到,并且保證結(jié)果一致谬盐,則是強(qiáng)一致性甸私;如果能夠允許后續(xù)的部分或者全部訪問不到,則是弱一致性飞傀;如果允許經(jīng)過一段時間后颠蕴,能夠訪問到更新的數(shù)據(jù)泣刹,并保持一致,則是最終一致性犀被。CAP定理中所說的不可能滿足的是強(qiáng)一致性椅您。
可用性指的是在正常響應(yīng)時間內(nèi),服務(wù)一直可用寡键。在分布式系統(tǒng)中存在許多節(jié)點(diǎn)掀泳,每個節(jié)點(diǎn)都承擔(dān)著相應(yīng)的職責(zé),如果其中某個節(jié)點(diǎn)出現(xiàn)故障西轩,就有可能導(dǎo)致整個系統(tǒng)的癱瘓员舵,所以保障系統(tǒng)的可用性是設(shè)計分布式系統(tǒng)必須要重點(diǎn)考慮的。對于一個具備可用性的分布式系統(tǒng)藕畔,每一個正常運(yùn)行的節(jié)點(diǎn)都必須對請求做出響應(yīng)马僻。所以,通常我們都會通過停機(jī)時間來衡量一個系統(tǒng)的可用性注服。
可用性分類 | 可用水平 | 年可容忍停機(jī)時間 |
---|---|---|
容錯可用性 | 99.9999% | <1min |
極高可用性 | 99.999% | <5 min |
自恢復(fù)可用性 | 99.99% | <53 min |
高可用性 | 99.9% | <8.8h |
商品可用性 | 99% | <87.6h |
分區(qū)容錯性是指韭邓,當(dāng)分布式系統(tǒng)在遇到某節(jié)點(diǎn)或網(wǎng)絡(luò)分區(qū)故障的時候,仍然能夠?qū)ν馓峁M足一致性和可用性的服務(wù)溶弟。好的分區(qū)容錯性要求能夠使應(yīng)用雖然是一個分布式系統(tǒng)女淑,而看上去卻好像是在一個可以運(yùn)轉(zhuǎn)正常的整體。比如現(xiàn)在的分布式系統(tǒng)中有某一個或者幾個機(jī)器宕掉了辜御,其他剩下的機(jī)器還能夠正常運(yùn)轉(zhuǎn)滿足系統(tǒng)需求鸭你,或者是機(jī)器之間有網(wǎng)絡(luò)異常,將分布式系統(tǒng)分隔未獨(dú)立的幾個部分擒权,各個部分還能維持分布式系統(tǒng)的運(yùn)作袱巨,這樣就具有好的分區(qū)容錯性。