我需要按照 MongoDB 参考中的建议在副本集上设置分片,以实现高可用性和可扩展性。在那种情况下,我对 C# 驱动程序的连接字符串及其行为有几个疑问(下面的代码片段):
下面的连接字符串是否适合连接到 mongos 实例:mongos1、mongos2 和 mongos3?
如果其中一个 mongos 实例崩溃,客户端会发生什么情况?是否会通过重试第二个 mongos 实例来优雅地处理失败的调用?客户端是否将失败的 mongos 实例列入黑名单并在一段时间后尝试?
如果我想设置 readpreference,驱动程序会知道副本集的存在和荣誉设置 ReadPreference 吗?
代码片段:
MongoUrlBuilder bldr = new MongoUrlBuilder();
List<MongoServerAddress> servers = new List<MongoServerAddress>();
servers.Add(new MongoServerAddress("mongos1:27016"));
servers.Add(new MongoServerAddress("mongos2:27016"));
servers.Add(new MongoServerAddress("mongos3:27016"));
bldr.Username = "myuser";
bldr.Password = "mypwd";
bldr.Servers = servers;
bldr.DatabaseName = "mydb";
bldr.ReadPreference = ReadPreference.Primary;
var server = MongoServer.Create(bldr.ToMongoUrl());