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

11張手繪圖:搞定分布式系統容錯架構

開發 架構
雖然定位是有“分布式”、“容錯架構”等看起來略顯復雜的字眼,但是咱們還是按照老規矩:大白話 + 手繪數張彩圖,逐步遞進,讓每個同學都能看懂這種復雜架構的設計思想。

這篇文章,我們將用非常淺顯易懂的語言,跟大家聊聊大規模分布式系統的容錯架構設計。雖然定位是有“分布式”、“容錯架構”等看起來略顯復雜的字眼,但是咱們還是按照老規矩:大白話 + 手繪數張彩圖,逐步遞進,讓每個同學都能看懂這種復雜架構的設計思想。

1、TB級數據放在一臺機器上:難啊!

咱們就用分布式存儲系統舉例,來聊一下容錯架構的設計。

首先,我們來瞧瞧,到底啥是分布式存儲系統呢?

其實特別的簡單,咱們就用數據庫里的一張表來舉例。

比如你手頭有個數據庫,數據庫里有一張特別大的表,里面有幾十億,甚至上百億的數據。

更進一步說,假設這一張表的數據量多達幾十個TB,甚至上百個TB,這時你覺得咋樣?

當然是內心感到恐慌和無助了,因為如果你用MySQL之類的數據庫,單臺數據庫服務器上的磁盤可能都不夠放這一張表的數據!

咱們就來看看下面的這張圖,來感受一下。

2、到底啥是分布式存儲?

所以,假如你手頭有一個超大的數據集,幾百TB!那你還是別考慮傳統的數據庫技術來存放了。

因為用一臺數據庫服務器可能根本都放不下,所以我們考慮一下分布式存儲技術?對了!這才是解決這個問題的辦法。

咱們完全可以搞多臺機器嘛!比如搞20臺機器,每臺機器上就放1/20的數據。

舉個例子,比如總共20TB的數據,在每臺機器上只要把1TB就可以了,1TB應該還好吧?每臺機器都可以輕松加愉快的放下這么多數據了。

所以說,把一個超大的數據集拆分成多片,給放到多臺機器上去,這就是所謂的分布式存儲

咱們再看看下面的圖。

3、那么啥又是分布式存儲系統呢?

那分布式存儲系統是啥呢?

分布式存儲系統,當然就是負責把一個超大數據集拆分成多塊,然后放到多臺機器上來存儲,接著統一管理這些分散在多臺機器上存儲的數據的一套系統。

比如說經典的hadoop就是這類系統,然后fastdfs也是類似的。

如果你可以腦洞打開,從思想本質共通的層面出發,那你會發現,其實類似elasticsearch、redis cluster等等系統,他本質都是如此。

這些都是基于分布式的系統架構,把超大數據拆分成多片給你存放在多臺機器上。

咱們這篇文章是從分布式系統架構層面出發,不拘泥于任何一種技術,所以姑且可以設定:這套分布式存儲系統,有兩種進程。

一個進程是Master節點,就在一臺機器上,負責統一管控分散在多臺機器上的數據。

另外一批進程叫做Slave節點,每臺機器上都有一個Slave節點,負責管理那臺機器上的數據,跟Master節點進行通信。

咱們看看下面的圖,通過圖再來直觀的看看上面的描述。

4、天哪!某臺機器宕機了咋辦?

這個時候又有一個問題了,那么萬一上面那20臺機器上,其中1臺機器宕機了咋整呢?

這就尷尬了,兄弟,這會導致本來完整的一份20TB的數據,最后有19TB還在了,有1TB的數據就搞丟了,因為那臺機器宕機了啊。

所以說你當然不能允許這種情況的發生,這個時候就必須做一個數據副本的策略。

比如說,我們完全可以給每一臺機器上的那1TB的數據做2個副本的冗余,放在別的機器上,然后呢,萬一說某一臺機器宕機,沒事啊,因為其他機器上還有他的副本。

我們來看看這種多副本冗余的架構設計圖。

上面那個圖里的淺藍色的“1TB數據01”,代表的是20TB數據集中的第一個1TB數據分片。

圖中可以看到,他就有3個副本,分別在三臺機器中都有淺藍色的方塊,代表了他的三個副本。

這樣的話,一份數據就有了3個副本了。其他的數據也是類似。

這個時候我們假設有一臺機器宕機了,比如下面這臺機器宕機,必然會導致“1TB數據01”這個數據分片的其中一個數據副本丟失。如下圖所示:

那這個時候要緊嗎?不要緊,因為“1TB數據01”這個數據分片,他還有另外2個副本在存活的兩臺機器上呢!

所以如果有人要讀取數據,完全可以從另外兩臺機器上隨便挑一個副本來讀取就可以了,數據不會丟的,不要緊張,大兄弟。


5、Master節點如何感知到數據副本消失?

現在有一個問題,比如說有個兄弟要讀取“1TB數據01”這個數據分片,那么他就會找Master節點,說:

“你能不能告訴我“1TB數據01”這個數據分片人在哪里啊?在哪臺機器上啊?我需要讀他啊!”

我們來看看下面的圖。

那么這個時候,Master節點就需要從“1TB數據01”的3個副本里選擇一個出來,告訴人家說:

“兄弟,在哪臺哪臺機器上,有1個副本,你可以去那臺機器上讀“1TB數據01”的一個副本就ok了。”

但是現在的問題是,Master節點此時還不知道“1TB數據01”的副本3已經丟失了,那萬一Master節點還是通知人家去讀取一個已經丟失的副本3,肯定是不可以的。

所以,我們怎么才能讓Master節點知道副本3已經丟失了呢?

其實也很簡單,每臺機器上負責管理數據的Slave節點,都每隔幾秒(比如說1秒)給Master節點發送一個心跳。

那么,一旦Master節點發現一段時間(比如說30秒內)沒收到某個Slave節點發送過來的心跳,此時就會認為這個Slave節點所在機器宕機了,那臺機器上的數據副本都丟失了,然后Master節點就不會告訴別人去讀那個丟失的數據副本。

大家看看下面的圖,一旦Slave節點宕機,Master節點收不到心跳,就會認為那臺機器上的副本3就已經丟失了,此時絕對不會讓別人去讀那臺宕機機器上的副本3。

那么此時,Master節點就可以通知人家去讀“1TB數據01”的副本1或者副本2,哪個都行,因為那兩個副本其實還是在的。

舉個例子,比如可以通知客戶端去讀副本1,此時客戶端就可以找那臺機器上的Slave節點說要讀取那個副本1。

整個過程如下圖所示。

6、復制副本保持足夠副本數量

這個時候又有另外一個問題,那就是“1TB數據01”這個數據分片此時只有副本1和副本2這兩個副本了,這就不足夠3個副本啊。

因為我們預設的是每個數據分片都得有3個副本的。大家想想,此時如何給這個數據分片增加1個副本呢?

很簡單,Master節點一旦感知到某臺機器宕機,就能感知到某個數據分片的副本數量不足了。

此時,就會生成一個副本復制的任務,挑選另外一臺機器來從有副本的機器去復制一個副本。

比如看下面的圖,可以挑選第四臺機器從第二臺機器去復制一個副本。

但是,現在這個復制任務是有了,我們怎么讓機器4知道呢?

其實也很簡單,機器4不是每秒都會發送一次心跳么?當機器4發送心跳過去的時候,Master節點就通過心跳響應把這個復制任務下發給機器4,讓機器4從機器2復制一個副本好了。

同樣,我們來一張圖,看看這個過程:

看上圖,現在機器4上是不是又多了一個“1TB數據01”的副本3 ?那么“1TB數據01”這個數據分片是不是又變成3個副本了?

7、刪除多余副本

那反過來,如果說此時機器3突然恢復了,他上面也有一個“1TB數據01”的副本3,相當于此時“1TB數據01”就有4個副本了,副本不就多余了嗎?

沒關系,一旦Master節點感知到機器3復活,會發現副本數量過多,此時會生成一個刪除副本任務。

他會在機器3發送心跳的時候,下發一個刪除副本的指令,讓機器3刪除自己本地多余的副本就可以了。這樣,就可以保持副本數量只有3個。

一樣的,大家來看看下面的圖。

8、全文總結

好了,到這里,通過超級大白話的講解,還有十多張圖的漸進式演進說明,相信大家以前即使不了解分布式系統,都絕對能理解一個分布式系統的完整的數據容錯架構是如何設計的了。

實際上,這種數據分片存儲 、多副本冗余、宕機感知、自動副本遷移、多余副本刪除,這套機制,對于hadoop、elasticsearch等很多系統來說,都是類似的。

所以筆者在這里強烈建議大家,一定好好吸收一下這種分布式系統、中間件系統底層數據容錯架構的思想。

這樣,以后學習類似的一些技術的時候,對他們的原理、思想都會感到一種似曾相識的感覺。

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-05-29 14:07:00

Zuul網關系統

2020-02-12 15:02:39

KVM架構圖分布式

2017-05-22 09:58:01

虛擬機虛擬化分布式

2022-08-04 00:05:11

系統分布式流量

2025-03-24 11:30:05

2024-06-06 08:40:07

2019-10-10 09:16:34

Zookeeper架構分布式

2017-12-20 16:15:30

分布式系統架構

2019-12-26 08:59:20

Redis主從架構

2019-01-31 09:20:36

架構容錯架構分布式容錯

2018-12-14 10:06:22

緩存分布式系統

2023-05-12 08:23:03

分布式系統網絡

2022-01-12 09:01:24

分布式系統容錯服務

2023-10-26 18:10:43

分布式并行技術系統

2017-10-27 08:40:44

分布式存儲剪枝系統

2023-02-11 00:04:17

分布式系統安全

2022-12-30 17:52:44

分布式容錯架構

2022-06-27 08:36:27

分布式事務XA規范

2015-08-03 15:48:42

Hadoop大數據

2013-03-22 15:55:22

Web架構架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线免费观看av | 二区在线视频 | 国产视频h | 麻豆国产一区二区三区四区 | 成人午夜网站 | 婷婷99 | 国产精品视频播放 | 精品在线一区二区 | 亚洲一区二区三区在线播放 | 国产美女久久 | 国产精品久久久亚洲 | 热99视频 | 亚洲午夜av久久乱码 | 污片在线免费观看 | 日韩午夜精品 | 精品一区二区三区免费视频 | 国产999精品久久久久久绿帽 | 久久男人 | 日本精品在线播放 | 黄a大片| 国产欧美精品一区二区 | 久久美女网 | 91精品国产乱码久久久 | 成人毛片网 | 久久久精品在线 | 国产精品久久精品 | 一区二区日韩精品 | 5060网一级毛片 | 欧美一级全黄 | 亚洲最大福利网 | 永久免费视频 | 91精品国产乱码久久久久久久久 | 色噜噜狠狠色综合中国 | 色秀网站 | 中文在线一区二区 | 婷婷狠狠 | sese视频在线观看 | a亚洲精品| 亚洲国产精品一区 | 国产精品99久久久精品免费观看 | 黑人性hd |