假设我的副本集包含一个主要P
和三个辅助S1
,S2
和S3
。假设一个应用程序用这个constructor创建一个Mongo clent。 种子列表为{P
,S1
,S2
}。请注意,该列表不包含S3
。
假设应用程序使用secondPreferred
,S1
和S2
都已关闭。查询会转到P
还是S3
?
javadoc说It will find all members (the master will be used by default)
,我猜这些查询会转到S3
。这是对的吗 ?
答案 0 :(得分:2)
种子列表就是这样,驱动程序将查询该列表以了解副本集的映射。这意味着它实际上可以使用不在该列表上的成员,即它可以使用S3
。
当驱动程序必须检测副本集中的更改时,无论是通过故障转移还是通过启动,它都将查询种子列表中的一个成员,基本上是rs.status()
并且它将结果存储在自身中在一段时间内,驾驶员认为值得刷新它,或者发生某种情况迫使驾驶员刷新它(即故障转移)。
所以答案是肯定的,它将用于S3
。