SETUP:
我有一个PRIMARY和两个mongodb的SECONDARY实例。 其中一个辅助实例与我的Web应用程序托管在同一区域。
我正在使用pymongo进行连接。
QUERY:
如何以较低的延迟与SECONDARY建立连接。
目前我这样做:
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference
db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.SECONDARY
我与任何一个SECONDARY有联系。 如何强制从具有较低延迟的实例获取连接
谢谢!
答案 0 :(得分:6)
阅读偏好如下:
因此最近次要的没有特定的一个。您可以通过组合NEAREST和tag_sets并标记辅助数据来实现此目的。
然后,如果辅助字段已被标记{'secondaries': 1}
,您可以从最近的辅助字词中读取,如下所示:
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference
db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.NEAREST
db.tag_sets = [{'secondaries': 1}]
您应该注意,如果选举发生且复制副本的拓扑发生变化,那么您必须手动更改tag_sets以表示新的辅助副本。
答案 1 :(得分:3)
这个答案非常具体我的情况,因为我最近的辅助设备与我的网络服务器位于同一区域(和在同一台机器上运行一样好),因此数据传输速度非常快,而且我不会必须为带宽使用付费(考虑到数据量,这个月可能变得很重要)。
否则'secondary_acceptable_latency_ms'的默认值= 15ms。所以这并不重要。
因此,如果有人发现自己处于相同的情况,这就是该怎么做:
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference
db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.SECONDARY
db.secondary_acceptable_latency_ms = 0.001
谢谢!