Проблема репликации Cassandra: даже с коэффициентом репликации 0 для DC1 я могу видеть пространство ключей и таблицу, реплицированные на DC2

У меня два DC:

DC1:

  • Узел 1: RAC1
  • Узел 2: RAC1

DC2:

  • Узел 3: RAC1

Я использую GossipingPropertyFileSnitch, удалил файл cassandra-topology.properties и использую только cassandra- rackdc.properties со следующей конфигурацией для каждого узла:

dc=DC1

стойка = RAC1

предпочитать_local = правда

При создании пространства ключей, как показано ниже на DC2:

CREATE KEYSPACE "test_rf"
  WITH REPLICATION = {
   'class' : 'NetworkTopologyStrategy',
   'DC1' : 0
   'DC2' : 1
};

Я предположил, что это пространство ключей, не должно реплицироваться (что, как я понимаю, даже не видно) на DC1: Node1 и Node2 .

Но я могу видеть пространства ключей в каждом узле DC1. Кроме того, я могу видеть любую таблицу, созданную на DC2, реплицированную на DC1.

Может кто-нибудь объяснить, почему это произошло? Или я что-то совсем упустил !!!


person Black Diamond    schedule 26.03.2018    source источник
comment
Вы видите их созданными на диске или когда используете DESCRIBE?   -  person Alex Ott    schedule 26.03.2018
comment
Я мог бы сделать SELECT * FROM keyspace.table_name; и получить результат !!!   -  person Black Diamond    schedule 27.03.2018


Ответы (1)


Это только метаданные о пространстве ключей и определении таблицы, которые создаются в обоих центрах обработки данных кольца Cassandra.

Это не настоящие данные, которые тиражируются повсюду. Это можно подтвердить, войдя в систему на отдельных узлах и проверив каталог данных. На самом деле папки могли быть созданы, но вы не должны видеть никаких стабильных файлов внутри этого каталога keypace / table /.

Фактически, вы можете читать / писать из этой таблицы из любого центра обработки данных. Пока вы читаете / записываете из DC1, он фактически передает данные из DC2.

person dilsingi    schedule 27.03.2018
comment
Я это понимаю. Но почему я не могу ограничить эту репликацию? Я просто не хочу, чтобы данные с DC2 реплицировались на DC1 !! Даже SELECT * FROM .. не должен допускаться из DC1. Возможный ? - person Black Diamond; 27.03.2018
comment
Невозможно избежать выбора из DC1 (если вы не настроили правила брандмауэра за пределами Cassandra). Опять же, данные не реплицируются, только метаданные - person dilsingi; 27.03.2018
comment
Хорошо. Таким образом, требуется какая-то авторизация или блокировка со стороны кода, чтобы пользователь не мог сделать это с DC1 !! Спасибо за информацию. - person Black Diamond; 27.03.2018