第五部分 架構篇 第十九章 MongoDB Sharding 架構( mongos)

來源:互聯網
上載者:User

標籤:monogdb mongos

1、mongos

mongos是使用者和叢集間的互動點,其職責是隱藏分區內部的複雜性並向使用者提供一個簡潔的單伺服器介面,這個抽象層中也存在一些縫隙,不過大多數情況下mongos允許你把一個叢集當做一台伺服器。

使用叢集時,應該串連一個mongos並向它發送所有的讀寫操作,無論如何,你都不應該直接存取分區(但如果想的話能做到)。

mongos會將所有使用者請求轉寄到恰當的分區上,如果使用者插入一份文檔,mongos會查看文檔的片鍵,對照資料區塊,並把文檔發送到持有相應塊的分區上。

舉個例子,比如說我們要插入{"foo":"bar"}且已經以foo作為片鍵做了分區,mongos會查看所有可用的塊,然後發現一個區間為{"a":"c"}的塊應當包含bar,這個塊在分區2上,因此mongos會把插入訊息發送給分區2。


說明:

如果一個查詢涉及了片鍵,mongos就可以使用和插入一樣的流程並找到某個(或某些)正確的分區並向其發送查詢,這種查詢又稱為針對性查詢(targeted query),因為它只針對那些可能包含我們所要尋找的資料的分區,如果它知道我們在尋找{"foo":"bar"},那麼查詢所含片鍵值大於bar的分區就沒有什麼意義了。

如果查詢不包含片鍵,mongos就必須把查詢發送給所有分區,這可能會比真對性查詢效率低,但並不一定,如果一個泛泛的查詢僅訪問記憶體中少量已被索引的文檔,而一個針對性查詢不得不訪問分布在多個分區中的磁碟資料,倆相比較,前者的效能肯定要比後者高得多。


2、設定管理員

mongos進程並不持久地儲存任何資料,叢集配置被儲存在一組專門的mongod上,它們被稱作設定管理員(config server),設定管理員包含了有關叢集的最完整可靠的資訊以供所有人(分區、mongos進程和系統管理員)訪問。

要保證資料區塊遷移成功、所有設定管理員都必須同時在先,如果其中任意一台停機了,則當前正在執行的所有遷移都會回退並停止,直到整套設定管理員在一次運行起來,任何一台設定管理員停機,叢集配置都無法改變。


3、叢集的構造

一個MongoDB叢集基本上由3類進程組成,即實際儲存資料的分區、負責把請求路由到正確資料的mongos進程,以及用於跟蹤叢集狀態的設定管理員


一個叢集的3個組件

說明:

叢集中每個組件可以包含多個進程,如所示:


每個組件可以包含多個進程

說明:

以上每個組件都不是一台機器,mongos進程通常跑在應用程式伺服器(AppServer)上,設定管理員,鑒於其重要性,是非常輕量級的並且基本上可以在任何機器上運行,每個分區通常由多台機器組成,因為它們實際儲存資料。

第五部分 架構篇 第十九章 MongoDB Sharding 架構( mongos)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.