Mongoose/MongoDB副本集使用secondary进行读取

cod*_*bia 5 mongoose mongodb replicaset

我最近更改了我的服务器设置以包含副本集.辅助DB位于世界各地的多个区域,以减少延迟.问题是我认为所有的读取都是从主服务器完成的,而不是从辅助服务器完成的.我在远离主数据库的服务器上看到500ms +延迟,但是与主服务器位于同一区域的临时服务器大约是20ms.如何检查辅助读取或最近读取是否有效,或者我是否设置丢失/错误?(我已尝试过SECONDARY_PREFERRED和NEAREST)

网址:

mongodb://1.1.1.1:27017,1.1.1.2:27017,1.1.1.3:27017,1.1.1.4:27017,1.1.1.5:27017/mydatabase
Run Code Online (Sandbox Code Playgroud)

我的选择如下:

"replSet": {
   "rs_name": "myRepSet"
   "readPreference": "ReadPreference.SECONDARY_PREFERRED",
   "read_preference": "ReadPreference.SECONDARY_PREFERRED",
   "slaveOk": true
}
Run Code Online (Sandbox Code Playgroud)

猫鼬版:3.8.x

sah*_*pta 3

根据项目问题,gitHub有一个问题是,升级到最新版本时,读取首选项似乎不起作用(mongoose@3.8.1 & mongodb@1.3.23),因为所有读取都是从主服务器而不是从辅助服务器完成的。

根据评论,当您回滚到旧版本(mongoose@3.6.4 & mongodb@1.2.14)时,这个问题不会出现,读取将开始进入辅助节点(集合级别)。这个问题应该在version 3.8.7.

请参考以下问题:

https://github.com/Automattic/mongoose/issues/1833 https://github.com/Automattic/mongoose/issues/1895