首页
/
每日頭條
/
科技
/
大數據分布式存儲模式
大數據分布式存儲模式
更新时间:2025-04-19 23:01:35


對于剛剛接觸分布式系統的小夥伴們來說,一提起分布式系統,就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統中的CAP理論。保證你能聽懂。

為了防止被誤以為是洗文的嫌疑,我在這裡先說明一下:我參考了知乎和博客園上等相關文章,還有下面的圖不是我自己畫的,我覺得能清晰地表達出意思就是好圖,在百度圖片上下載了一波。

一、什麼是分布式系統

拿一個最簡單的例子,就比如說我們的圖書管理系統。之前的系統包含了所有的功能,比如用戶注冊登錄、管理員功能、圖書借閱管理等。這叫做集中式系統。也就是一個人幹了好幾件事。

後來随着功能的增多,用戶量也越來越大。集中式系統維護太麻煩,拓展性也不好。于是就考慮着把這些功能分開。通俗的理解就是原本需要一個人幹的事,現在分給n個人幹,各自幹各自的,最終取得和一個人幹的效果一樣。

稍微正規一點的定義就是:一個業務分拆多個子業務,部署在不同的服務器上。 然後通過一定的通信協議,能夠讓這些子業務之間相互通信。

既然分給了n個人,那就涉及到這些人的溝通交流協作問題。想要去解決這些問題,就需要先聊聊分布式系統中的CAP理論。千萬不要被這個看起來高大上的概念迷惑住。

二、簡單的概述一下

CAP理論指的是一個分布式系統最多隻能同時滿足一緻性(Consistency)、可用性(Availability)和分區容錯性(Partition tolerance)這三項中的兩項。拿一個網上的圖來看看。

大數據分布式存儲模式(大白話講述分布式系統中的CAP理論)1

這張圖不知道你之前看到過沒,如果你看過書或者是視頻,這張圖應該被列舉了好幾遍了。下面我不準備直接上來就對每一個特性進行概述。我們先從案例出發逐步過渡。

1、一個小例子

首先我們看一張圖。

大數據分布式存儲模式(大白話講述分布式系統中的CAP理論)2

現在網絡中有兩個節點N1和N2,他們之間網絡可以連通,N1中有一個應用程序A,和一個數據庫V,N2也有一個應用程序B2和一個數據庫V。現在,A和B是分布式系統的兩個部分,V是分布式系統的兩個子數據庫。

現在問題來了。突然有兩個用戶小明和小華分别同時訪問了N1和N2。我們理想中的操作是下面這樣的。

大數據分布式存儲模式(大白話講述分布式系統中的CAP理論)3

(1)小明訪問N1節點,小華訪問N2節點。同時訪問的。

(2)小明把N1節點的數據V0變成了V1。

(2)N1節點一看自己的數據有變化,立馬執行M操作,告訴了N2節點。

(4)小華讀取到的就是最新的數據。也是正确的數據。

上面這是一種最理想的情景。它滿足了CAP理論的三個特性。現在我們看看如何來理解滿足的這三個特性。

2、Consistency 一緻性

一緻性指的是所有節點在同一時間的數據完全一緻。就好比剛剛舉得例子中,小明和小華讀取的都是正确的數據,對他們用戶來說,就好像是操作了同一個數據庫的同一個數據一樣。

因此對于一緻性,也可以分為從客戶端和服務端兩個不同的視角來理解。

(1)客戶端

從客戶端來看,一緻性主要指的是多并發訪問時更新過的數據如何獲取的問題。也就是小明和小華同時訪問,如何獲取更新的最新的數據。

(2)服務端

從服務端來看,則是更新如何分布到整個系統,以保證數據最終一緻。也就是N1節點和N2節點如何通信保持數據的一緻。

對于一緻性,一緻的程度不同大體可以分為強、弱、最終一緻性三類。

(1)強一緻性

對于關系型數據庫,要求更新過的數據能被後續的訪問都能看到,這是強一緻性。比如小明更新V0到V1,那麼小華讀取的時候也應該是V1。

(2)弱一緻性

如果能容忍後續的部分或者全部訪問不到,則是弱一緻性。比如小明更新VO到V1,可以容忍那麼小華讀取的時候是V0。

(3)最終一緻性

如果經過一段時間後要求能訪問到更新後的數據,則是最終一緻性。比如小明更新VO到V1,可以使得小華在一段時間之後讀取的時候是V0。

3、可用性

可用性指服務一直可用,而且是正常響應時間。就好比剛剛的N1和N2節點,不管什麼時候訪問,都可以正常的獲取數據值。而不會出現問題。好的可用性主要是指系統能夠很好的為用戶服務,不出現用戶操作失敗或者訪問超時等用戶體驗不好的情況。

對于可用性來說就比較好理解了。

4、分區容錯性

分區容錯性指在遇到某節點或網絡分區故障的時候,仍然能夠對外提供滿足一緻性和可用性的服務。就好比是N1節點和N2節點出現故障,但是依然可以很好地對外提供服務。

這個分區容錯性也是很好理解。

在經過上面的分析中,在理想情況下,沒有出現任何錯誤的時候,這三條應該都是滿足的。但是天有不測風雲。系統總是會出現各種各樣的問題。下面來分析一下為什麼說CAP理論隻能滿足兩條。

三、驗證CAP理論

既然系統總是會有錯誤,那我們就來看看可能會出現什麼錯誤。

大數據分布式存儲模式(大白話講述分布式系統中的CAP理論)4

N1節點更新了V0到V1,想在也想把這個消息通過M操作告訴N1節點,卻發生了網絡故障。這時候小明和小華都要同時訪問這個數據,怎麼辦呢?現在我們依然想要我們的系統具有CAP三個特性,我們分析一下會發生什麼。

(1)系統網絡發生了故障,但是系統依然可以訪問,因此具有容錯性。

(2)小明在訪問節點N1的時候更改了V0到V1,想要小華訪問節點N2的V數據庫的時候是V1,因此需要等網絡故障恢複,将N2節點的數據庫進行更新才可以。

(3)在網絡故障恢複的這段時間内,想要系統滿足可用性,是不可能的。因為可用性要求随時随地訪問系統都是正确有效的。這就出現了矛盾。

正是這個矛盾所以CAP三個特性肯定不能同時滿足。既然不能滿足,那我們就進行取舍。

有兩種選擇:

(1)犧牲數據一緻性,也就是小明看到的衣服數量是10,買了一件應該是9了。但是小華看到的依然是10。

(2)犧牲可用性,也就是小明看到的衣服數量是10,買了一件應該是9了。但是小華想要獲取的最新的數據的話,那就一直等待阻塞,一直到網絡故障恢複。

現在你可以看到了CAP三個特性肯定是不能同時滿足的,但是可以滿足其中兩個。

三、CAP特性的取舍

我們分析一下既然可以滿足兩個,那麼舍棄哪一個比較好呢?

(1)滿足CA舍棄P,也就是滿足一緻性和可用性,舍棄容錯性。但是這也就意味着你的系統不是分布式的了,因為涉及分布式的想法就是把功能分開,部署到不同的機器上。

(2)滿足CP舍棄A,也就是滿足一緻性和容錯性,舍棄可用性。如果你的系統允許有段時間的訪問失效等問題,這個是可以滿足的。就好比多個人并發買票,後台網絡出現故障,你買的時候系統就崩潰了。

(3)滿足AP舍棄C,也就是滿足可用性和容錯性,舍棄一緻性。這也就是意味着你的系統在并發訪問的時候可能會出現數據不一緻的情況。

實時證明,大多數都是犧牲了一緻性。像12306還有淘寶網,就好比是你買火車票,本來你看到的是還有一張票,其實在這個時刻已經被買走了,你填好了信息準備買的時候發現系統提示你沒票了。這就是犧牲了一緻性。

但是不是說犧牲一緻性一定是最好的。就好比mysql中的事務機制,張三給李四轉了100塊錢,這時候必須保證張三的賬戶上少了100,李四的賬戶多了100。因此需要數據的一緻性,而且什麼時候轉錢都可以,也需要可用性。但是可以轉錢失敗是可以允許的。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
華中科技大學前身及曆史過程
華中科技大學前身及曆史過程
湖北日報訊(記者謝慧敏、通訊員鄭奇悅、李巋、李瑩)長江之畔、大軍山下,一座現代化的大學新校區即将崛起。7月15日上午,華中科技大學國際教育科技創新園區(軍山校區)項目,在武漢經開區軍山新城正式啟動,“喻家山”牽手“大軍山”,共同開啟校地合作...
2025-04-19
羅技g102鼠标燈光設置
羅技g102鼠标燈光設置
說起鼠标,經常會與遊戲二字沾邊,很多鼠标都是主打為遊戲而生,所以讓人聯想到遊戲也無可非議。但是更多時候鼠标被當成一個生産力工具使用,如上班族、設計師等等,這些人群對于鼠标的要求極為苛刻,普通鼠标已經無法實現他們的需求,因此需要更專業的鼠标來...
2025-04-19
關于excel數據處理的小問題
關于excel數據處理的小問題
在日常工作中,但凡涉及到數據處理都少不了Excel的身影!但你真的知曉Excel隐藏的其它有趣玩法嗎?今天就給大家“盤一盤”近期知曉的幾個Excel新奇玩法,保準你看完後會心動!01、Excel更換照片底色想必大家都有遇到“證件照”底色不符...
2025-04-19
小米12三款機型哪個更值得入手
小米12三款機型哪個更值得入手
盤點近幾年國産手機的發展,可以用突飛猛進來形容,國産手機不僅在國内賣得好,在國際市場,銷量也是很棒。這不,在國内大火的小米12系列,如今正式在國外市場上市,受到了全球米粉和媒體的好評。一句話進行形容,就是國産手機“高光”時刻,小米12國外上...
2025-04-19
手機和電腦怎麼投屏
手機和電腦怎麼投屏
手機和電腦怎麼投屏?在Windows10系統桌面,右鍵點擊桌面左下角的“開始”按鈕,在彈出菜單中選擇“設置”菜單項,今天小編就來聊一聊關于手機和電腦怎麼投屏?接下來我們就一起去研究一下吧!手機和電腦怎麼投屏在Windows10系統桌面,右鍵...
2025-04-19
Copyright 2023-2025 - www.tftnews.com All Rights Reserved