分布式

cap算法

簡介:

  • 一致性: 在寫操作完成之后開始的讀操作,必須返回該值,或者以后寫操作的值。(在一致的系統(tǒng)中,客戶端將值寫入任何服務(wù)器并獲得響應(yīng)后,它希望能夠從其讀取的任何服務(wù)器讀取該值)。
  • 可用性: 系統(tǒng)中每個非故障的節(jié)點(diǎn)收到的請求必須獲得響應(yīng)。(在可用的系統(tǒng)中,如果我們客戶端向服務(wù)器發(fā)送請求,且該服務(wù)器沒有崩潰,則服務(wù)器必須響應(yīng)客戶端,并不允許服務(wù)器忽略客戶端的請求)。
  • 分區(qū)容錯性: 網(wǎng)絡(luò)將被允許任意丟失從一個節(jié)點(diǎn)發(fā)送另一節(jié)點(diǎn)的許多消息。

為什么不存在一個同時支持cap的服務(wù)?

  1. 我們先假設(shè)存在一個服務(wù)同時支持“一致性”,“可用性”,“分區(qū)容錯性”。 如圖下:
    image.png
  2. 這個時候出現(xiàn)了網(wǎng)絡(luò)分區(qū)(即G1服務(wù)器和G2服務(wù)器不能交流)。客戶端先向G1服務(wù)器提交請求,需要把v0改成v1。因?yàn)榉?wù)需要滿足可用性。所以G
    1 需要正確響應(yīng)服務(wù)的請求,把v0 改成v1,但是網(wǎng)絡(luò)分區(qū)了,G2服務(wù)器并不能收到變更,在G2中服務(wù)還是v0。
  3. 此時客戶端去G2請求值,G2依然返回v0,所以并不滿足一致性的要求,所以此服務(wù)不存在。
  4. 綜上所述,不可能存在同時滿足cap的服務(wù)。

cap結(jié)論:

分布式服務(wù)必定會發(fā)生網(wǎng)絡(luò)分區(qū)的問題(服務(wù)器間狀態(tài)不能同步)。此時只能在一致性 和 可用性 中作出一個取舍。 如果要求強(qiáng)一致性,那么只能犧牲可用性,拒絕客戶端的寫請求,如果要求服務(wù)的可用性,那么服務(wù)之間的狀態(tài)必定不能同步,所以一定會犧牲一致性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、CAP理論 在理論計(jì)算機(jī)科學(xué)中,CAP定理,也就是以計(jì)算機(jī)科學(xué)家Eric Brewer的名字命名的Brewer...
    HRocky閱讀 596評論 0 0
  • 微服務(wù)的發(fā)展 微服務(wù)倡導(dǎo)將復(fù)雜的單體應(yīng)用拆分為若干個功能簡單、松耦合的服務(wù),這樣可以降低開發(fā)難度、增強(qiáng)擴(kuò)展性、便于...
    脆皮雞大蝦閱讀 284評論 0 1
  • 前言 分布式系統(tǒng)(distributed system)正變得越來越重要,大型網(wǎng)站幾乎都是分布式的。分布式系統(tǒng)的最...
    Devincd閱讀 526評論 0 0
  • 1、什么是分布式事務(wù) 當(dāng)所有操作都針對同一臺機(jī)器的同一個數(shù)據(jù)庫時,可以依靠數(shù)據(jù)庫自身的鎖、重做日志等來保證事務(wù)的A...
    冰河winner閱讀 462評論 0 0
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點(diǎn)、注意力、語言聯(lián)想、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會...
    Jenaral閱讀 6,037評論 0 5

友情鏈接更多精彩內(nèi)容