假设我有一个副本集,其中包含一个主 P
和三个辅助 S1
、S2
和 S3
。假设应用程序使用此 constructor 创建一个 Mongo 客户端。 。 种子列表为{P
、S1
、S2
}。请注意,该列表不包含 S3
。
假设应用程序使用 secondPreferred
并且 S1
和 S2
均已关闭。查询会转到 P
还是 S3
?
javadoc说它将找到所有成员(默认情况下将使用master)
,我猜查询将转到S3
。这是对的吗 ?
最佳答案
种子列表就是这样,驱动程序将查询该列表以了解副本集的映射。这意味着它实际上可以使用不在该列表中的成员,即它可以使用 S3
。
当驱动程序必须通过故障转移或启动来检测副本集中的更改时,它将查询种子列表的成员之一以获取基本的 rs.status()
和它会将结果存储在驱动程序认为值得刷新的一段时间内,或者发生迫使驱动程序刷新它的情况(即故障转移)。
所以答案是肯定的,它将用于 S3
。
关于java - 带种子的 MongoClient 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21932850/