成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CAP定理 —— 一個(gè)不可能的選擇

云計(jì)算 分布式
CAP定理將類(lèi)似的推理方法擴(kuò)展到分布式系統(tǒng)中;具體而言,它指出分布式系統(tǒng)只能提供三個(gè)中的兩個(gè)理想特性:一致性、可用性和分區(qū)容錯(cuò)性(CAP中的字母'C','A'和'P')。

“便宜、快速、好:選擇其中兩個(gè)”?

CAP定理:你不能同時(shí)擁有蛋糕并吃掉它。

  • 一致性:蛋糕始終是同樣的口味。
  • 可用性:蛋糕始終可以被吃掉。
  • 分區(qū)容錯(cuò)性:蛋糕可以被切成塊并共享。

CAP定理將類(lèi)似的推理方法擴(kuò)展到分布式系統(tǒng)中;具體而言,它指出分布式系統(tǒng)只能提供三個(gè)中的兩個(gè)理想特性:一致性、可用性和分區(qū)容錯(cuò)性(CAP中的字母'C','A'和'P')。

將數(shù)據(jù)同時(shí)保存在多個(gè)節(jié)點(diǎn)上的網(wǎng)絡(luò),無(wú)論這些節(jié)點(diǎn)是實(shí)際的還是虛擬的計(jì)算機(jī),都被稱(chēng)為分布式系統(tǒng)。

在開(kāi)發(fā)云應(yīng)用程序時(shí),了解CAP定理非常重要,因?yàn)樗性茟?yīng)用程序都是分布式系統(tǒng)。

CAP的基本概念

讓我們更深入地了解CAP定理對(duì)分布式系統(tǒng)的三個(gè)特性的概念。

一致性

無(wú)論客戶(hù)端連接到哪個(gè)節(jié)點(diǎn),它們總是同時(shí)看到相同的數(shù)據(jù),這就是一致性。

為了實(shí)現(xiàn)這一點(diǎn),每次將數(shù)據(jù)寫(xiě)入一個(gè)節(jié)點(diǎn)時(shí),必須立即將其發(fā)送或復(fù)制到系統(tǒng)中的所有其他節(jié)點(diǎn),然后才能認(rèn)為寫(xiě)入已經(jīng)“成功完成”。

可用性

任何請(qǐng)求數(shù)據(jù)的客戶(hù)端都會(huì)獲得響應(yīng),即使網(wǎng)絡(luò)中的一個(gè)或多個(gè)節(jié)點(diǎn)不可用。這就是可用性。

換句話(huà)說(shuō),分布式系統(tǒng)中的每個(gè)運(yùn)行節(jié)點(diǎn)都將毫無(wú)例外地對(duì)每個(gè)請(qǐng)求提供合法的答案。

分區(qū)容錯(cuò)性

分布式系統(tǒng)內(nèi)部的通信中斷稱(chēng)為分區(qū)。這可以被看作是系統(tǒng)中兩個(gè)節(jié)點(diǎn)之間的連接丟失或暫時(shí)延遲。

術(shù)語(yǔ)“分區(qū)容忍性”是指盡管在構(gòu)成系統(tǒng)的各個(gè)節(jié)點(diǎn)之間的通信中出現(xiàn)任意數(shù)量的故障,集群的功能仍必須得到維護(hù)。

不同NoSQL數(shù)據(jù)庫(kù)的CAP原則

圖片img

NoSQL數(shù)據(jù)庫(kù)是在分布式網(wǎng)絡(luò)上運(yùn)行的應(yīng)用程序的最佳選擇。與垂直可擴(kuò)展的SQL(關(guān)系型)數(shù)據(jù)庫(kù)相比,NoSQL數(shù)據(jù)庫(kù)是水平可擴(kuò)展且分布式設(shè)計(jì)的。這意味著它們能夠在由多個(gè)鏈接節(jié)點(diǎn)組成的發(fā)展網(wǎng)絡(luò)上快速擴(kuò)展。

現(xiàn)在,NoSQL數(shù)據(jù)庫(kù)根據(jù)它們提供的兩個(gè)CAP原則進(jìn)行分類(lèi),這兩個(gè)原則分別是:

CP數(shù)據(jù)庫(kù)提供一致性和分區(qū)容忍性,但以犧牲可用性為代價(jià)。如果在任意兩個(gè)節(jié)點(diǎn)之間發(fā)生分區(qū),系統(tǒng)需要將非一致的節(jié)點(diǎn)停止(即使其無(wú)法訪(fǎng)問(wèn)),直到分區(qū)問(wèn)題得到解決。

AP數(shù)據(jù)庫(kù)在數(shù)據(jù)的一致性方面存在犧牲,但提供可用性和分區(qū)容忍性。當(dāng)分區(qū)發(fā)生時(shí),網(wǎng)絡(luò)中的所有節(jié)點(diǎn)仍然可訪(fǎng)問(wèn),但靠近分區(qū)開(kāi)頭或結(jié)尾的節(jié)點(diǎn)可能提供比其他節(jié)點(diǎn)更舊的數(shù)據(jù)版本。(一旦分區(qū)問(wèn)題得到解決,AP數(shù)據(jù)庫(kù)通常會(huì)重新同步節(jié)點(diǎn),以糾正可能引入到系統(tǒng)中的任何不一致性。)

CA數(shù)據(jù)庫(kù)確保數(shù)據(jù)在系統(tǒng)中的所有節(jié)點(diǎn)之間保持一致和可訪(fǎng)問(wèn)。然而,如果系統(tǒng)中的任意兩個(gè)節(jié)點(diǎn)之間存在分區(qū),它無(wú)法完成這個(gè)任務(wù),因此無(wú)法提供容錯(cuò)性。

由于分區(qū)在分布式系統(tǒng)中是不可避免的,我們故意將CA數(shù)據(jù)庫(kù)類(lèi)型放在列表的最后。因此,雖然可以在理論上討論CA分布式數(shù)據(jù)庫(kù)的概念,但實(shí)際上,這樣的數(shù)據(jù)庫(kù)根本不存在。然而,如果你覺(jué)得你的分布式應(yīng)用需要CA數(shù)據(jù)庫(kù),并不意味著你不能擁有這樣一個(gè)數(shù)據(jù)庫(kù)。

包括PostgreSQL在內(nèi)的各種關(guān)系型數(shù)據(jù)庫(kù)都可以提供一致性和可用性,并可以在多個(gè)節(jié)點(diǎn)上進(jìn)行復(fù)制以進(jìn)行分布式部署。

CAP定理和MongoDB

MongoDB將數(shù)據(jù)存儲(chǔ)為BSON(二進(jìn)制JSON)文檔,使其成為常見(jiàn)的NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng)。它廣泛用于大規(guī)模、實(shí)時(shí)、分布式應(yīng)用。

MongoDB是一個(gè)CP數(shù)據(jù)存儲(chǔ),因?yàn)樗軌蛟诒3謹(jǐn)?shù)據(jù)一致性的同時(shí)解決網(wǎng)絡(luò)分區(qū)問(wèn)題,但以犧牲可用性為代價(jià),正如CAP定理所描述的那樣。

在MongoDB中,一個(gè)復(fù)制集(replica set)只能有一個(gè)主節(jié)點(diǎn)來(lái)處理所有寫(xiě)操作。復(fù)制集中的次要節(jié)點(diǎn)復(fù)制主節(jié)點(diǎn)的事務(wù)日志,并使用它來(lái)更新自己的數(shù)據(jù)副本。客戶(hù)端默認(rèn)從主節(jié)點(diǎn)讀取數(shù)據(jù),但可以通過(guò)設(shè)置讀偏好來(lái)更改這一行為。

如果原始節(jié)點(diǎn)故障,最近操作日志最多的次要節(jié)點(diǎn)將被提升為主節(jié)點(diǎn)。只要所有從節(jié)點(diǎn)都趕上了新的主節(jié)點(diǎn),集群就會(huì)恢復(fù)可訪(fǎng)問(wèn)性。在此期間,沒(méi)有客戶(hù)端可以發(fā)送寫(xiě)請(qǐng)求,因此數(shù)據(jù)在整個(gè)網(wǎng)絡(luò)上是同步的。

CAP定理(AP)和Cassandra

Apache軟件基金會(huì)開(kāi)發(fā)和分發(fā)Cassandra,這是一個(gè)自由開(kāi)源的NoSQL數(shù)據(jù)庫(kù)。它以寬列數(shù)據(jù)庫(kù)的形式進(jìn)行分布式數(shù)據(jù)存儲(chǔ)。由于其無(wú)主節(jié)點(diǎn)的設(shè)計(jì),Cassandra沒(méi)有像MongoDB那樣的單點(diǎn)故障。

Cassandra是一個(gè)AP數(shù)據(jù)庫(kù),因?yàn)樗鼭M(mǎn)足了一些但不是所有的一致性、可用性和分區(qū)容忍性(CAP)要求。由于缺乏主節(jié)點(diǎn),Cassandra集群中的所有節(jié)點(diǎn)始終處于運(yùn)行狀態(tài)至關(guān)重要。另一方面,Cassandra通過(guò)允許客戶(hù)端隨時(shí)向任何節(jié)點(diǎn)寫(xiě)入數(shù)據(jù)并迅速解決不一致性問(wèn)題來(lái)提供最終一致性。

Cassandra具有“修復(fù)”功能,以幫助節(jié)點(diǎn)趕上其對(duì)等節(jié)點(diǎn),因?yàn)橹挥性诰W(wǎng)絡(luò)分裂的情況下數(shù)據(jù)才會(huì)變得不一致,并且不一致性會(huì)迅速得到糾正。然而,持續(xù)的可用性會(huì)產(chǎn)生高性能的系統(tǒng),在某些情況下可能值得付出代價(jià)。

結(jié)論

如果你正在創(chuàng)建基于微服務(wù)的分布式項(xiàng)目,了解CAP定理可以幫助你選擇合適的數(shù)據(jù)庫(kù)。例如,如果你可以接受最終一致性(而不是嚴(yán)格一致性),但需要快速迭代數(shù)據(jù)模型并進(jìn)行水平擴(kuò)展,那么像Cassandra或Apache CouchDB這樣的AP數(shù)據(jù)庫(kù)可能能滿(mǎn)足你的需求并簡(jiǎn)化部署。

另一方面,如果你的應(yīng)用程序的成功取決于數(shù)據(jù)的可靠性,例如電子商務(wù)或支付服務(wù),那么關(guān)系型數(shù)據(jù)庫(kù)如PostgreSQL可能是最佳選擇。

責(zé)任編輯:武曉燕 來(lái)源: 程序新視界
相關(guān)推薦

2021-04-20 08:11:33

Css前端@property

2016-03-14 14:45:18

中華網(wǎng)

2014-07-17 10:38:30

大數(shù)據(jù)

2017-12-19 14:15:27

程序員愿望加班

2019-01-02 06:26:02

API應(yīng)用程序編程接口應(yīng)用安全

2021-02-21 14:05:02

區(qū)塊鏈比特幣安全

2012-04-10 08:58:26

小米

2024-01-24 13:08:00

2022-11-30 08:53:51

CAP定理計(jì)算機(jī)

2013-12-13 10:01:16

諾基亞安卓手機(jī)

2016-09-01 16:37:24

2015-04-28 10:57:28

javascriptjavascript題javascript題

2021-10-15 10:34:31

云計(jì)算制造業(yè)云應(yīng)用

2012-03-13 14:14:37

啟明星辰終端管理產(chǎn)品

2023-05-09 08:59:09

ChatGPT程序員裁員

2025-04-17 09:00:00

架構(gòu)聊消息微信

2020-07-31 17:13:28

Python開(kāi)發(fā)工具

2019-03-27 14:33:11

人工智能機(jī)器人職業(yè)

2012-03-24 21:26:56

2013-07-02 09:26:11

IntelCEO代工
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 夜夜爽99久久国产综合精品女不卡 | 日韩欧美专区 | 欧洲色| 草草视频在线免费观看 | 日韩精品视频在线免费观看 | 久久久久国产精品一区 | 日本网站在线看 | 亚洲视频一区二区三区 | 欧美日韩在线观看视频 | 一级毛片观看 | 一本大道久久a久久精二百 欧洲一区二区三区 | 一区二区三区免费在线观看 | 日韩一区二区三区视频 | 日韩视频区 | 久久一区二区三区电影 | 精品一区二区三区四区 | 亚洲国产18 | 成人免费视频网站在线看 | 国产在线一级片 | 亚洲久视频 | 在线看91 | 日韩免费一区二区 | 久久精品99| 精品久久影院 | 精品久久国产老人久久综合 | 亚洲精品久久久久国产 | 美女视频. | 精品美女久久久 | 亚洲黄色一级毛片 | 国产传媒在线播放 | 亚洲一区二区三 | 国外成人在线视频网站 | 久久99精品久久久 | 狠狠操av| 精品一区二区三区免费视频 | 成人欧美一区二区三区1314 | 精品一区av | 一级片免费视频 | 岛国毛片| 特级生活片 | 男人的天堂一级片 |