Оптимальные настройки для драйвера Cassandra Java для записи только в локальный центр обработки данных

Я недавно начал использовать драйвер Datastax Java для нашего варианта использования Cassandra ... Мы будем использовать драйвер Datastax Java для чтения / записи в Cassandra ...

Я успешно могу создать соединение Cassandra с помощью драйвера Datastax Java ... Но мне интересно, есть ли какие-либо другие настройки, которые я должен использовать в производственной среде, чтобы получить лучшую производительность с помощью драйвера Datastax Java при подключении к Cassandra?

/**
 * Creating Cassandra connection using Datastax driver
 *
 */
private DatastaxConnection() {

    try{
        builder = Cluster.builder();
        builder.addContactPoint("some-node");

        // Can anybody explain me what does below piece of code do?

        builder.poolingOptions().setCoreConnectionsPerHost(
                HostDistance.LOCAL,
                builder.poolingOptions().getMaxConnectionsPerHost(HostDistance.LOCAL));

        // And also what does below piece of code is doing?       
        cluster = builder
                .withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE)
                .withReconnectionPolicy(new ConstantReconnectionPolicy(100L))
                .build();

        StringBuilder s = new StringBuilder();
        Set<Host> allHosts = cluster.getMetadata().getAllHosts();
        for (Host h : allHosts) {
            s.append("[");
            s.append(h.getDatacenter());
            s.append("-");
            s.append(h.getRack());
            s.append("-");
            s.append(h.getAddress());
            s.append("]");
        }
        System.out.println("Cassandra Cluster: " + s.toString());

        session = cluster.connect("testdatastaxks");
    } catch (NoHostAvailableException e) {

    } catch (Exception e) {

    }
}

Мои главные приоритеты: -

  • Отфильтруйте узлы Cassandra на основе локального центра обработки данных. Таким образом, в пуле соединений будут только узлы Cassandra локального центра обработки данных.
  • И получите максимальную производительность при использовании Java-драйвера Datastax с некоторыми настройками.

Я знаю, что некоторые настройки могут отличаться в разных средах, но могут быть некоторые настройки, которым все должны следовать, чтобы получить оптимальную производительность при установлении соединений Cassandra с использованием драйвера Datastax Java.

Как и в случае с Astyanax, когда я использовал ранее, вам нужно было использовать TOKEN_AWARE ...

Значит, должны быть какие-то лучшие настройки или рекомендуемые при использовании Java-драйвера Datastax?


person AKIWEB    schedule 26.10.2013    source источник


Ответы (2)


Отфильтровать узлы Cassandra на основе локального центра обработки данных. Таким образом, в пуле соединений будут только узлы Cassandra локального центра обработки данных.

Затем вам нужно использовать DCAwareRoundRobinPolicy.

Как и в случае с Astyanax, когда я использовал ранее, вам нужно было использовать TOKEN_AWARE ...

Это верно и для драйвера Java DataStax, он называется TokenAwarePolicy и может использоваться поверх упомянутой выше DCAwareRoundRobinPolicy.

Я знаю, что некоторые настройки могут отличаться в разных средах, но могут быть некоторые настройки, которым все должны следовать, чтобы получить оптимальную производительность при установлении соединений Cassandra с использованием драйвера Datastax Java.

Я не могу говорить от имени «всех», но за исключением правильного выбора политик балансировки нагрузки, как описано выше, остальное, скорее всего, будет зависеть от среды. Но, конечно, если вы очень заботитесь о производительности, неплохо поиграть с различными настройками из Configuration и немного реалистичной рабочей нагрузки и посмотрите, поможет ли что-нибудь.

person pcmanus    schedule 05.11.2013
comment
В «PoolingOptions» я не вижу метод установки под названием «setLocalDataCenter» для ограничения подключений к локальному центру обработки данных. Как клиент узнает центр обработки данных, откуда он запущен? - person vijay; 20.08.2014

Свойства можно использовать для ограничения имен хостов, которые должен использовать драйвер.

cassandra.loadbalancing.whitelistpolicy.hostnames   
person Prashant Shimpi    schedule 20.01.2017