2015-05-24 15 views
2

Я использовал драйвер Cassandra CQL для реализации некоторого модуля. Я знаю, что драйвер CQL работает на порту 9042. Мой модуль отлично работает на порту 9042 для серверов cassandra (попробовал как локальные, так и удаленные). Однако из-за некоторых ограничений на порт ЦОД 9042 не открыт для Cassandra. Мне нужно сделать мою работу над этим центром обработки данных.Реализация драйвера Cassandra CQL

Можно ли использовать один и тот же код с портом 9160? Я знаю, что 9160 - это бережливый порт и используется для многих других драйверов для Cassandra. Мне просто интересно, есть ли какой-либо взлом, чтобы заставить драйвер CQL работать на 9160 или изменить код как можно меньше, чтобы он работал на 9160.

В настоящее время, когда я пытаюсь использовать тот же код с портом 9160, он дает следующая ошибка

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: xx.yy.zz.aa  (com.datastax.driver.core.ConnectionException: [xx.yy.zz.aa :9160] Unexpected error during transport initialization 
(com.datastax.driver.core.ConnectionException: [xx.yy.zz.aa :9160] Operation timed out)),   xx.yy.zz.aa :9160 

Когда я пытаюсь телнет 9160 порт

telnet xx.yy.zz.aa 9160 
Trying xx.yy.zz.aa... 
Connected to xx.yy.zz.aa. 
Escape character is '^]'. 
xyzaaaa 
Connection closed by foreign host. 

ищет некоторую помощь.

ответ

1

Вы можете сделать интерфейс CQL доступным на порту 9160, изменив native_transport_port с 9042 на 9160 в cassandra.yaml на своих серверах cassandra. Вам также необходимо будет изменить rpc_port на что-то иное, чем 9160.

В java-драйвере datastax вы можете настроить порт для использования в Cluster.Builder с помощью метода withPort.

+0

Спасибо Andy за ответ. Я согласен, что если мы это сделаем, мое приложение начнет работать на порту 9160. Но проблема в том, что мы изменим rpc_port от 9160 на какой-то другой порт, тогда существующие приложения, которые уже развернуты и используют старые драйверы cassandra, сломаются, поскольку порт изменится. Любое другое предложение? – learner

+0

К сожалению, вам понадобятся два отдельных порта: один для бережливости, один для родного транспорта (CQL), они не могут использоваться совместно. Вы можете делать CQL над Thrift, но большинство драйверов не поддерживают это, и вы также теряете преимущества для CQL (т. Е. Несколько запросов на соединение), когда делаете это с осторожностью. –

+0

Спасибо Энди. :-) – learner

Смежные вопросы