搭建高可用MongoDB叢集(四):分區__mongodb

來源:互聯網
上載者:User

按照上一節中《搭建高可用mongodb叢集(三)—— 深入複本集》搭建後還有兩個問題沒有解決: 從節點每個上面的資料都是對資料庫全量拷貝,從節點壓力會不會過大。 資料壓力大到機器支撐不了的時候能否做到自動擴充。

在系統早期,資料量還小的時候不會引起太大的問題,但是隨著資料量持續增多,後續遲早會出現一台機器硬體瓶頸問題的。而mongodb主打的就是海量資料架構,他不能解決海量資料怎麼行。不行。“分區”就用這個來解決這個問題。

傳統資料庫怎麼做海量資料讀寫。其實一句話概括:分而治之。上圖看看就清楚了,如下 taobao嶽旭強在infoq中提到的 架構圖:

上圖中有個TDDL,是taobao的一個資料訪問層組件,他主要的作用是SQL解析、路由處理。根據應用的請求的功能解析當前訪問的sql判斷是在哪個業務資料庫、哪個表訪問查詢並返回資料結果。具體如圖:

說了這麼多傳統資料庫的架構,那Nosql怎麼去做到了這些呢。mysql要做到自動擴充需要加一個資料訪問層用程式去擴充,資料庫的增加、刪除、備份還需要程式去控制。一但資料庫的節點一多,要維護起來也是非常頭疼的。不過mongodb所有的這一切通過他自己的內部機制就可以搞定。頓時石化了,這麼牛X。還是上圖看看mongodb通過哪些機制實現路由、分區:

從圖中可以看到有四個組件:mongos、config server、shard、replica set。

mongos,資料庫叢集請求的入口,所有的請求都通過mongos進行協調,不需要在應用程式添加一個路由選取器,mongos自己就是一個請求分發中心,它負責把對應的資料請求請求轉寄到對應的shard伺服器上。在生產環境通常有多mongos作為請求的入口,防止其中一個掛掉所有的mongodb請求都沒有辦法操作。

config server,顧名思義為設定管理員,儲存所有資料庫元資訊(路由、分區)的配置。mongos本身沒有實體儲存體分區伺服器和資料路由資訊,只是緩衝在記憶體裡,設定管理員則實際儲存這些資料。mongos第一次啟動或者關掉重啟就會從 config server 載入配置資訊,以後如果設定管理員資訊變化會通知到所有的 mongos 更新自己的狀態,這樣 mongos 就能繼續準確路由。在生產環境通常有多個 config server 設定管理員,因為它儲存了分區路由的中繼資料,這個可不能丟失。就算掛掉其中一台,只要還有存貨, mongodb叢集就不會掛掉。

shard,這就是傳說中的分區了。上面提到一個機器就算能力再大也有天花板,就像軍隊打仗一樣,一個人再厲害喝血瓶也拼不過對方的一個師。俗話說三個臭皮匠頂個諸葛亮,這個時候團隊的力量就凸顯出來了。在互連網也是這樣,一台普通的機器做不了的多台機器來做,如下圖:

一台機器的一個資料表 Collection1 儲存了 1T 資料,壓力太大了。在分給4個機器後,每個機器都是256G,則分攤了集中在一台機器的壓力。也許有人問一台機器硬碟加大一點不就可以了,為什麼要分給四台機器呢。不要光想到儲存空間,實際啟動並執行資料庫還有硬碟的讀寫、網路的IO、CPU和記憶體的瓶頸。在mongodb叢集只要設定好了分區規則,通過mongos操作資料庫就能自動把對應的資料操作請求轉寄到對應的分區機器上。在生產環境中分區的片鍵可要好好設定,這個影響到了怎麼把資料均勻分到多個分區機器上,不要出現其中一台機器分了1T,其他機器沒有分到的情況,這樣還不如不分區。

replica set,上兩節已經詳細講過了這個東東,怎麼這裡又來湊熱鬧。其實上圖4個分區如果沒有 replica set 是個不完整架構,假設其中的一個分區掛掉那四分之一的資料就丟失了,所以在高可用性的分區架構還需要對於每一個分區構建 replica set 複本集保證分區的可靠性。生產環境通常是 2個副本 + 1個仲裁。

說了這麼多,還是來實戰一下如何搭建高可用的mongodb叢集:

首先確定各個組件的數量,mongos 3個, config server 3個,資料分3片 shard server 3個,每個shard 有一個副本一個仲裁也就是 3 * 2 = 6 個,總共需要部署15個執行個體。這些執行個體可以部署在獨立機器也可以部署在一台機器,我們這裡測試資源有限,只準備了 3台機器,在同一台機器只要連接埠不同就可以,看一下物理部署圖:

架構搭好了,安裝軟體。 1、準備機器,IP分別設定為: 192.168.0.136、192.168.0.137、192.168.0.138。 2、分別在每台機器上建立mongodb分區對應測試檔案夾。

XHTML

1 2 3 4 5 #存放mongodb資料檔案 mkdir -p /data /mongodbtest   #進入mongodb檔案夾 cd    /data /mongodbtest

3、下載mongodb的安裝程式包

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.