我知道,如果我使用 ServerAddresses 列表(使用此函数)创建与 Java 中的 MongoDB 到副本集的连接ReadPreference.SECONDARY
,客户端将平衡副本集之间的读取,更喜欢往返时间较短的节点(相同科罗拉多州,例如)。
但是,当我使用 为一堆 MongoS 服务器创建 MongoDB 客户端时ReadPreference.SECONDARY
,所有读取/写入都转到列表中的第一个服务器,即使访问是跨 colo 并且 MongoS 存在于同一个 colo 中。
例如,如果我有三个 MongoS 服务器——SF1、SF2 和 NYC1(按此顺序)——我的客户只与 SF1 通信,无论他们是在 SF 还是 NYC。
在与 MongoS 服务器通信时,我是否需要配置一些东西或以不同的方式设置客户端?我错过了什么?