2017-01-14 2 views
1

У меня есть кластер cassandra из 3 узлов. Задание записывается на конкретный узел, и я пытаюсь прочитать данные в отдельном потоке, который может оказаться в другом узле cassandra. Я не получаю данных из cassandra, даже данные отдельным потоком вставляют его до 10-15 секунд запроса другим потоком.Cassandra - Чтение после записи другим потоком не возвращает данных

Мой коэффициент репликации как ниже.

SELECT * FROM system.schema_keyspaces;

keyspace_name  | durable_writes | strategy_class          | strategy_options 
--------------------+----------------+------------------------------------------------------+---------------------------- 
      application |   True | org.apache.cassandra.locator.NetworkTopologyStrategy |    {"DC1":"3"} 
system_distributed |   True |   org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"3"} 
      system |   True |   org.apache.cassandra.locator.LocalStrategy |       {} 

Консистенция: -

Чтение и запись происходит с помощью отдельного приложения.

Приложение, которое записывает данные, установило уровень согласованности ЛЮБОЙ. Приложение, которое считывает данные, установило уровень согласованности QUORUM.

Есть ли какая-либо конфигурация, которую я здесь отсутствует?

Благодаря

+0

Что такое РФ и каковы уровни согласованности запросов на запись и чтение? – RussS

+0

Я обновил свою нить с подробностями. – user1578872

ответ

2

15 секунд очень долго - так что вы должны увидеть данные.

Поскольку вы пишите ЛЮБОЙ (http://docs.datastax.com/en/archived/cassandra/3.x/cassandra/dml/dmlConfigConsistency.html), существует вероятность того, что ваш кластер не «здоров» и не существует узла реплики, или у вас есть проблемы с подключением, и записи все равно будут успешными, поскольку они написаны для намеченной передачи обслуживания.

Чтобы проверить это вы можете:

  1. Изменение консистенции запись в local_one/ONE - это будет гарантировать, что по крайней мере одна реплика получила данные.
  2. Включить вероятностную трассировку (http://docs.datastax.com/en/archived/cassandra/3.x/cassandra/tools/toolsSetTraceProbability.html) и проверить, доставлены ли записи.

Является ли поток записи с помощью пакетной обработки или записи построчно - Если вы не используете пакетный убедитесь, что вы используете маркер осведомленной политику (http://docs.datastax.com/en/drivers/java/3.0/com/datastax/driver/core/policies/TokenAwarePolicy.html) и подготовленные заявления - что будет гарантировать, что клиент будет писать узел с репликой.

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