考虑以下情况
名为 myreplica 的MongoDB副本集 3个节点: n1 , n2 & N3
3个节点具有相同的数据。
我想连接到3个节点并平衡来自我网站的读取。现在我正在使用此连接字符串:
mongodb://myuser:mypassword@n1, n2, n3/?replicaSet=myreplica&slaveOk=true
这使得两个从属节点可以处理读取,但不能处理主要节点。
如何编写连接字符串以查询3个节点中的任何一个?
来源:http://docs.mongodb.org/manual/reference/read-preference/#replica-set-read-preference-modes
更新
使用readPreference=nearest
选项有效。这三个节点位于同一个局域网中。
答案 0 :(得分:1)
实际上这根本不会影响你的阅读。您所做的只是为您的连接提供种子列表。这就是你应该在连接中做的所有事情。
为了确定您希望如何处理与阅读的互动,您需要设置一个适合您希望实现的read preference。
在您的情况下,可能想要的是将其设置为secondaryPreferred,以允许从辅助节点以及主节点读取。但显然有这个优先权。
另请注意,副本集并非用作MongoDB的扩展选项,而是用于冗余和故障转移
如果您要分发性能,则扩展您的硬件,或通过实施Sharding查看扩展