本篇內(nèi)容主要講解“CAP定理怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“CAP定理怎么理解”吧!
創(chuàng)新互聯(lián)公司為客戶提供專業(yè)的做網(wǎng)站、網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項目涵蓋了網(wǎng)頁設(shè)計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、手機(jī)網(wǎng)站開發(fā)等網(wǎng)站方面業(yè)務(wù)。
計算機(jī)界有很多高大上又難于理解的術(shù)語,CAP就是其中之一, 什么一致性(Consistency), 可用性(Availability), 分區(qū)容錯性(Partition tolerance) 就很難理解了, 再加上CAP定理更是讓人云里霧里, 今天咱們試圖通俗的演繹一下。
張大胖在公司奮發(fā)圖強(qiáng),經(jīng)過多年的努力,終于做到了架構(gòu)師的位置。
架構(gòu)師的椅子還沒坐熱,很快就來了一個項目要做架構(gòu)設(shè)計。
老板把大胖叫來,諄諄教導(dǎo)說: 大胖啊, 數(shù)據(jù)是我們的寶貴資產(chǎn),你設(shè)計的系統(tǒng)可千萬要保證數(shù)據(jù)不能丟失??!
大胖說老板放心, 這方面我有經(jīng)驗, 一般來講我們要做數(shù)據(jù)的冗余處理, 簡單的來講就是給數(shù)據(jù)做多個副本來保存。 我會設(shè)計一個分布式系統(tǒng), 把數(shù)據(jù)備份到多個機(jī)器節(jié)點(diǎn)去。
幾天后, 大胖給發(fā)了一張圖, 展示了這個分布式系統(tǒng)是怎么工作的:
數(shù)據(jù)副本在不同的機(jī)器上做冗余, 中間有數(shù)據(jù)的復(fù)制, 保證數(shù)據(jù)的同步。
雖然只是兩臺機(jī)器, 但是也構(gòu)成了一個簡單的分布式環(huán)境。
老板雖然不懂技術(shù), 但是看到數(shù)據(jù)在不同的機(jī)器之間有備份,也就放心了。
經(jīng)過幾個月的開發(fā)和測試,可容乃幾千人并發(fā)的 分布式系統(tǒng)順利上線, 但是大家很快就發(fā)現(xiàn): 分布式系統(tǒng)不像單機(jī)系統(tǒng)那么簡單, 由于網(wǎng)絡(luò)的原因, 或者某個機(jī)器的原因很容易導(dǎo)致通訊失敗,或者節(jié)點(diǎn)不可用。
有一天, 用戶先訪問了左邊的機(jī)器A , 寫入了一條數(shù)據(jù), 然后機(jī)器A很不幸, 網(wǎng)線被悲催的網(wǎng)管給踢掉了, 這直接導(dǎo)致了兩個嚴(yán)重的后果:
負(fù)載均衡找不著機(jī)器A,認(rèn)為它死翹翹了, 就要把用戶的下一次訪問轉(zhuǎn)到機(jī)器B去。
數(shù)據(jù)復(fù)制也找不著機(jī)器A , 只好罷工。 用戶剛寫入的數(shù)據(jù)沒法復(fù)制到機(jī)器B,機(jī)器B上還是老數(shù)據(jù)
怎么辦? 雖然這是一次偶然, 把網(wǎng)管臭罵一頓, 插上網(wǎng)線就可以了, 但是誰能保證以后兩個機(jī)器的通信是一致暢通的呢?
組里的小王說: 我們的機(jī)器B 還活著呢, 還能提供服務(wù), 數(shù)據(jù)復(fù)制不到機(jī)器B, 不就是少看幾條數(shù)據(jù)嘛, 無傷大雅,不影響大局, 勉強(qiáng)可用, 插上網(wǎng)線后數(shù)據(jù)復(fù)制就會工作, 一切就會恢復(fù)正常。
小王無意中選擇了系統(tǒng)的可用性(Availability,簡稱A), 系統(tǒng)能提供服務(wù)就好, 數(shù)據(jù)不一致可以忍受。
張大胖說: 不行, 老板說了,我們系統(tǒng)的數(shù)據(jù)極為重要, 數(shù)據(jù)如果不一致會帶來嚴(yán)重后果,所以機(jī)器B上的和這些關(guān)鍵數(shù)據(jù)相關(guān)的功能也必須停掉, 必須等到機(jī)器A插上網(wǎng)線,數(shù)據(jù)同步以后才能開工
很明顯, 張大胖遵循老板指示, 把一致性(Consistency, 簡稱C )放到了首位。
所以問題就很明顯了, 在網(wǎng)絡(luò)節(jié)點(diǎn)之間無法通信的情況下, 和數(shù)據(jù)復(fù)制相關(guān)的功能, 要么選擇可用性(A) , 要么選擇一致性?, 不能同時選擇兩者。
大胖仔細(xì)思考了一下, 其實(shí)這兩種選擇的背后其實(shí)隱藏著另外一個事實(shí), 那就是網(wǎng)絡(luò)節(jié)點(diǎn)之間無法通信的情況下, 節(jié)點(diǎn)被隔離,產(chǎn)生了網(wǎng)絡(luò)分區(qū), 整個系統(tǒng)仍然是可以工作的, 大胖給它起了個名: 分區(qū)容錯性(Partition tolerance, 簡稱P)。
如果選擇了可用性(A) + 分區(qū)容錯性(P) , 就要放棄一致性(C)。
如果選在一致性(C) + 分區(qū)容錯性(P) , 就得放棄可用性(A) , 對了, 這種情況下,雖然系統(tǒng)的有些功能是不能使用的, 因為需要等待數(shù)據(jù)的同步, 但是那些和數(shù)據(jù)同步無關(guān)的功能還是可以訪問的 , 相當(dāng)于系統(tǒng)做了功能的降級。
既然有AP和CP, 會不會出現(xiàn)僅僅是CA(一致性+可用性)這種組合呢? 就是沒有分區(qū)容錯性, 只保留可用性和一致性? 仔細(xì)想想, 這種情況其實(shí)就退化成了單機(jī)應(yīng)用, 沒有意義了。
大胖覺得自己似乎發(fā)現(xiàn)了一個規(guī)律: 在一個分布式計算機(jī)系統(tǒng)中,一致性(C),可用性(A)和分區(qū)容錯性(P) 這三種保證無法同時得到滿足,最多滿足兩個。
他決定把找個規(guī)律叫做CAP定理, 聽起來比較高大上, 顯得自己高深莫測。
如果你實(shí)在是搞不懂這CAP, 張大胖會告訴你一個更容易理解的版本: 在一個分布式系統(tǒng)中, 在出現(xiàn)節(jié)點(diǎn)之間無法通信(網(wǎng)絡(luò)分區(qū)產(chǎn)生), 你只能選擇 可用性 或者 一致性, 沒法同時選擇他們。
到此,相信大家對“CAP定理怎么理解”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
當(dāng)前題目:CAP定理怎么理解
標(biāo)題路徑:http://jinyejixie.com/article40/gpejho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、、網(wǎng)站維護(hù)、動態(tài)網(wǎng)站、移動網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)