Astyanax ConnectionPool setMaxConnsPerHost

Меня смущает способ настройки пула соединений Astyanax. Я использую следующее для настройки своего пула.

public final int CONNECTION_POOL_SIZE_PER_HOST = 1;
private String conecPoolName = "xxxx";
private String ipSeeds = "xxxxx";
private String clusterName = "xxxxx";
private String keyspaceName = "xxxxx";
private Keyspace keyspace;

private ConnectionPoolConfigurationImpl conPool;

public DMPAstyanaxConfPool() throws DMPException {
    conPool = new ConnectionPoolConfigurationImpl(conecPoolName).setMaxConnsPerHost(
            CONNECTION_POOL_SIZE_PER_HOST).setSeeds(ipSeeds);

    AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder().forCluster(clusterName)
            .forKeyspace(keyspaceName)
            .withAstyanaxConfiguration(new AstyanaxConfigurationImpl().setDiscoveryType(NodeDiscoveryType.NONE))
            .withConnectionPoolConfiguration(conPool)
            .withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
            .buildKeyspace(ThriftFamilyFactory.getInstance());

    context.start();
    keyspace = context.getEntity();
}

Большинство свойств легко понять, но я не уверен, что именно устанавливает setMaxConnsPerHost. На моей машине я использую многопоточное приложение, которое создает несколько соединений cassandra, и оно работает нормально, даже если для setMaxConnsPerHost установлено значение 1. Кроме того, я знаю, что на сервере cassandra есть конфигурация, которая позволяет нам установить максимальное количество соединений и максимальный количество подключений на хост.

Связаны ли конфигурация сервера и эта конфигурация? Иначе в чем конкретно смысл этой настройки?


person mvallebr    schedule 29.01.2013    source источник


Ответы (1)


Из документов Java:

Максимальное количество подключений, выделяемых для пула одного хоста

ConnectionPoolConfigurationImpl(conecPoolName).setMaxConnsPerHost настраивает, сколько хостов может быть у каждого хоста.

public ConnectionPoolConfigurationImpl setMaxConnsPerHost(int maxConns) {
    Preconditions.checkArgument(maxConns > 0, "maxConnsPerHost must be >0");
    //this relates to connections per each node.
    this.maxConnsPerPartition = maxConns;
    return this;
}

Существует также setMaxConns для установки максимально допустимого количества соединений в пуле:

Максимальное количество соединений в пуле, не используемое всеми реализациями пула соединений.

public ConnectionPoolConfigurationImpl setMaxConns(int maxConns) {
    this.maxConns = maxConns;
    return this;
}

Какой из них следует использовать, зависит от вашей реализации пула соединений. тип.

Но, к сожалению, оба setMaxConnsPerHost и setMaxConns похоже, не хватает документации.

person Lyuben Todorov    schedule 08.03.2013