mongo read preference读优先级设置

mongo的read preference模式

mongo的查询过程,默认是primary模式,也就是从主节点查询。当然也有其他模式。主模式的有点就是,你总是能读到最新的数据,缺点在于,读写位于同一个节点,负载比较高。

mongo的查询几种模式,

Primary:默认,所有的均从primaryreplica set

primarypreferred:大多数情况下从primaryreplica set读,当其不可用时,从其secondary members

secondary:所有的读操作均从secondary member读取

SecondaryPreferred:大部分情况下从secondary member读取,当secondary member不可用时,从primary读取

nearest:从最小网络延时的replica set读取

 

需要注意的是Read preference在通过mongos连接的情况下,配置仍然生效。


Read preference的处理过程

 

成员选择(memberselection

clientdrivermongos会周期性的更新replica set的状态

如果你选择的是非primary模式的read preference,那么client driver会采用以下的方式决定连接哪个member

  1. 结合member的类型(primarysecondaryor all members)收集一系列合适的member
  2. 如果指定了tag set,那么就排除掉不符合tag setmember
  3. 按照绝对价值计算哪一个member是距离client最近的
  4. 按照指定的距离范围(ping time,默认是15ms),可以找到一系列位于这个距离之内的members,这些就可以定义为absolute nearest
  5. 从上述一系列的member中随机挑选一个。

猜你喜欢

转载自blog.csdn.net/stridebin/article/details/80345701