2015-08-14 4 views
1

Возможно ли иметь разные настройки репликации на разных узлах одного и того же кластера? (Все контроллеры домена имеют одинаковое пространство клавиш/таблицы, но разные настройки репликации)Коэффициент репликации Cassandra по кластеру

Мы хотели бы иметь данные сбора данных DC1 и DC2 в разных географических точках и отправлять их в DC3. Поэтому DC3 содержит все данные от DC1 + DC2.

Однако DC1 и DC2 не должны содержать данные друг друга (только данные, которые были написаны локальными клиентами).

Можно ли это сделать в Кассандре, имея разные настройки репликации ключей в DC?

  • На DC1: 'DC1':1, 'DC3':1
  • На DC2: 'DC2':1, 'DC3':1
  • На DC3: 'DC3':1

ответ

2

Вы не можете сделать это с NetworkTopologyStrategy. В зависимости от того, сколько усилий вы хотите внести в это, вы можете реализовать свою собственную стратегию репликации. Я не думаю, что это очень распространено, но Кассандра действительно это допускает, и, вероятно, не будет слишком сложно реализовать то, что вы хотите (см. Пример NTS's implementation).

Если вы не хотите, чтобы реализовать свою собственную стратегию, я бы рекомендовал создать 2 keyspaces со следующей конфигурацией:

CREATE KEYSPACE keyspace1 
WITH replication = { 
    'class' : 'NetworkTopologyStrategy', 
    'DC1' : 1, 
    'DC3' : 1 
}; 

CREATE KEYSPACE keyspace2 
WITH replication = { 
    'class' : 'NetworkTopologyStrategy', 
    'DC2' : 1, 
    'DC3' : 1 
}; 

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

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