项目连接只配置了主和其中两个从,但发现未配置的从上也有链接,这个是什么原因呢?
mongodb://test:test@a:28001,b:28001,c:28001/db?slaveOk=true&replicaSet=repl1&write=1&readPreference=secondaryPreferred&connectTimeoutMS=10000
mongo版本3.4复制集
1主(a)
4从(b,c,d,e)
重启项目后发现实际上现在d和e的库上都有连接。
luffy_1984 已回答的问题
这是因为驱动做了负载均衡,即使你只配置了副本集的一个节点,你的程序仍是会与副本集中的其他节点建立连接。
- 为什么驱动会这样做?
你的connect uri指定了replicaSet参数,驱动会认为你连接的是一个副本集,它会自己进行负载均衡。
- 驱动怎么获取副本集中的其他节点?
驱动在连接到你配置的节点后,通过db.isMatser()获取副本集中的其他节点,对于该会话之后的操作,驱动会根据策略(包括轮询,readConcern 、Read Preference)选取其中最优的一个节点来执行操作。
- 如何避免客户端连接到其他节点?
将其他节点设置为hidden节点。
luffy_1984 已回答的问题