我是服务器端开发人员,致力于使用mongo群集作为持久数据库的项目。
它说to a MongoDB server
但是,如果我有一个跟在后面的connectionString呢?
mongodb://user:pwd@mongos1:port,mongos3:port,mongos3:port,mongos4:port,mongos5:port,mongos6:port/admin?readPreference=secondaryPreferred
具有6个mongos实例的mongodb分片群集。
问题: connectionPoolSetting是否与一台mongos服务器相关?或与所有mongos服务器有关?
例如如果我们在此设置中将maxSize = 10,是否表示单个客户端的单个mongos服务器的最大连接池= 10(我的6个mongos集群的最大池= 60)?或无论我们拥有多少个mongos服务器,整个集群的最大连接池= 10?
答案 0 :(得分:0)
最大连接池= 10意味着在客户端池中最多将有10个连接,无论集群中有多少服务器。
答案 1 :(得分:0)
Mongo Client
com.mongodb.client.MongoClient
界面:
MongoDB集群的客户端表示。实例可以表示独立的MongoDB实例,副本集或分片群集。此类的实例负责维护群集的最新状态,并可能缓存与此相关的资源,包括用于监视的后台线程和连接池。
MongoClient
对象用于使用getDatebase()
方法访问数据库,并使用其中的集合和文档。
MongoClient实例表示与 数据库;您甚至只需要一个类MongoClient的实例 有多个线程。
重要 通常,您只为一个服务器创建一个MongoClient实例。 指定的MongoDB部署(例如独立,副本集或分片 群集)并在您的应用程序中使用它。但是,如果您创建 多个实例:
所有资源使用限制(例如,最大连接数等)均适用 MongoClient实例。
要处理实例,请调用MongoClient.close()清理资源。
以下代码使用连接池创建一个MongoDB客户端连接对象,以连接到MongoDB实例。
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoClients.create()
静态方法创建由默认主机(localhost)和端口(27017)指定的连接对象。您可以使用MongoClientSettings
明确指定其他设置,其中MongoClient
指定各种设置来控制MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)
的行为。
ConnectionPoolSettings
连接池设置:
ConnectionPoolSettings.Builder
对象指定与MongoDB服务器的连接池有关的所有设置。创建客户端对象时,应用程序将创建此连接池。连接池的这种创建是特定于驱动程序的。
ConnectionPoolSettings
是maxSize(int maxSize)
的构建器,具有指定连接池属性的方法。例如100
:允许的最大连接数。默认值为minSize
。其他方法包括maxConnectionIdleTime
,MongoClient
等。
使用连接池设置实例化MongoClientSettings settings = MongoClientSettings.builder()
.applyToConnectionPoolSettings(builder ->
builder.maxSize(20).minSize(10)
.build();
MongoClient mongoClient = MongoClients.create(settings);
//...
// Verify the connection pool settings max size as
settings.getConnectionPoolSettings().getMaxSize()
的代码:
mongos
问题:connectionPoolSetting是否与一台mongos服务器相关? 或与所有mongos服务器有关?
客户端或应用程序通过mongos
路由器连接到分片群集(包括其所有分片)。客户端程序指定URL连接字符串和其他连接选项。在分片群集中,客户端可以通过一组mongos
或单个mongos
连接,或者多个客户端可以通过单个mongos
等连接;等等;这取决于您的应用程序体系结构。
如果通过单个mongos
连接,则可以在连接字符串中指定mongos
的主机,端口,用户/密码等。如果它是多个mongos
,则有多个主机/端口值。不论mongos
的数量如何,客户端程序仅通过一个mongos
连接到群集。
连接池设置仅适用于一个mongos
路由器,因为应用程序连接到一个mongos
时,与连接字符串中指定的<tr>
的数量无关。