我Astyanax client
用来从Cassandra database
. 我有一个single cluster
. four nodes
我有replication factor of 2
。我试图了解两者之间有什么区别
setMaxConns and setMaxConnsPerHost
Astyanax 客户端中的方法?我找不到关于此的适当文档。
我有一个多线程代码,它产生多个线程,然后只创建一次到 Cassandra 数据库的连接(因为它是一个单例),然后继续重用其他请求。
现在我想了解以上两种方法对读取性能有何影响?应该如何设置这些值?
如果我将上述两种方法设置为-
setMaxConns(-1) and setMaxConnsPerHost(20)
那是什么意思呢?任何解释都会有很大帮助。
更新代码:-
下面是代码,我用来建立连接 -
private CassandraAstyanaxConnection() {
context = new AstyanaxContext.Builder()
.forCluster(ModelConstants.CLUSTER)
.forKeyspace(ModelConstants.KEYSPACE)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
)
.withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
.setPort(9160)
.setMaxConnsPerHost(20)
.setMaxConns(-1)
.setSeeds("host1:9160,host2:9160,host3:9160,host4:9160")
)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setCqlVersion("3.0.0")
.setTargetCassandraVersion("1.2"))
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());
context.start();
keyspace = context.getEntity();
emp_cf = ColumnFamily.newColumnFamily(
ModelConstants.COLUMN_FAMILY,
StringSerializer.get(),
StringSerializer.get());
}
如果我正在调试这段代码,它甚至都没有进入BagOfConnectionsConnectionPoolImpl
课堂。我在同一个类中放置了很多断点,以查看它是如何使用连接和其他默认参数的。但不知道为什么它没有击中那个类。