我刚刚开始使用 MongoDB,同时使用 YCSB 对其进行测试,并且我有几个关于读取偏好及其实现的问题。
我已经设置了 1 个主节点和 2 个辅助节点,并像这样在 YCSB java 客户端上设置了阅读首选项mongo.setReadPreference(ReadPreference.secondary());
1.为什么我点 YCSB 连接到主节点,它仍然可以执行读取操作而不会产生错误消息?我还检查了日志,可以看到 Primary 是为这些请求提供服务的节点。
2客户如何知道生产环境中的Secondary节点?默认情况下,您在哪里连接客户端?是否所有客户端都转到主节点,检索辅助节点列表,然后重新连接到辅助节点以执行读取?
3通过浏览源代码,我发现根据偏好选择适当副本的逻辑在replica_set_monitor.cpp
虽然我还不清楚这段代码在哪里执行,但它是在 Primary、Secondary 还是 client?
谢谢