2017-05-05 53 views
2

在MongoDB的副本集集羣中,當我的主服務器忙於提供其他請求時,如何確保對一個擁有用戶的快速響應?用於副本集的MongoDB負載均衡器

我是否需要使用負載平衡器,或者mongodb本身將查詢路由到可用的輔助節點?

感謝

回答

4

你並不需要使用負載平衡器,或路由查詢輔助節點;主節點可以自行處理的併發查詢:

  1. MongoDB supports concurrent queries, both reads and writes, using a granular locking system
  2. 這是not advised to use secondaries to provide extra read capacity,因爲複製的設計讓這款低效和不可靠的大多數用例
  3. 如果您的主要花費很長的時間服務於單個請求,以便鎖定其他請求,這應通過重新設計低效查詢或添加合適的indexes來解決。
  4. 如果您的服務器正在努力爲多個用戶服務,儘管該查詢進行優化,看看你的hardware是否不足作業
  5. 如果你仍然覺得你需要擴展你的讀取和寫入,推薦的方式那是通過sharding,而不是使用副本集的其他節點。
+0

如果不推薦使用副本來增加讀取容量,那麼它有什麼好處?僅備份和容錯? – khandelwaldeval

0

通常寫入由主處理,讀取應通過閱讀偏好發送到二級。儘管將數據傳播到輔助服務器可能需要一些微不足道的時間,但輔助服務器使用oplog副本進行數據複製。

你不需要任何負載平衡器,Mongo有能力做這些事情。 瞭解更多關於它在這裏 -

https://docs.mongodb.com/manual/replication/

+0

其實,建議是*不*發送讀取到二手,除了在某些特殊情況下。有關詳細信息,請參閱[閱讀首選項](https://docs.mongodb.com/manual/core/read-preference/#use-cases)上的文章。 –