整個副本讀我想了解的行爲在MongoDB中的副本集讀取。特別是我有一個讀取速度快,寫入速度低,數據量相對較小(比如小於8GB)的環境。我有一個3節點副本集。分佈在MongoDB中
我閱讀本文件:
http://docs.mongodb.org/manual/core/read-preference/
特別是:
主默認模式。所有操作都從當前副本集中讀取。
primaryPreferred在大多數情況下,操作從初級讀取,但如果它是不可用的,操作從次要部件讀出。
次級所有操作從副本集的次要部件讀出。
secondaryPreferred在大多數情況下,操作從次要構件讀取但如果沒有二次部件是可用的,操作從初級讀取。
最近的操作從副本集的最近的構件讀取,而不論該成員的類型的。
所以我的理解是,默認讀取轉到主要。有閱讀偏好設置,允許從中讀取(secondary
和secondaryPreferred
)。在這些情況下,可能會提供陳舊的數據。
在我看來,最好是將讀數分佈在主機和輔助機器上,這樣我可以在所有3臺機器上最好地使用它。但我並不認爲這是一種選擇。尤其是下面的語句困擾我:
如果讀操作佔了你的應用程序的流量的很大比例,分配讀取二次會員可以提高讀取吞吐量。但是,在大多數情況下,分片可以爲更大規模的操作提供更好的支持,因爲集羣可以在一組機器上分配讀寫操作。
但是,在數據集相對較小的情況下,分片根本沒有意義。有人可以闡明正確的配置嗎?
爲什麼你想分配讀取到輔助?這聽起來像主要可能能夠滿足您的需求就好了。 –
是什麼讓你覺得呢?它能夠每秒處理1K查詢(顯然具有低延遲)?每秒10K查詢呢?無論我的流量負載如何,在某一點上,一臺機器無法處理它,然後我想要在整個機器上分配流量。 – Kevin
當然,我測試過可以處理30K讀/秒的系統。您擴展或分發的方式不是通過輔助,而是通過分片。 –