2015-08-14 57 views
1

在同一羣集的不同節點上可以有不同的複製設置嗎? (所有DC都有相同的密鑰空間/表格,但複製設置不同)跨羣集的Cassandra不同複製因子

我們希望DC1和DC2在不同地理位置收集傳感器數據,並將這些數據發送到DC3。所以DC3包含來自DC1 + DC2的所有數據。

但是,DC1和DC2不應包含彼此的數據(僅限本地客戶端寫入的數據)。

這可以通過在DC上進行不同的密鑰空間複製設置在Cassandra中實現嗎?

  • 在DC1:'DC1':1, 'DC3':1
  • 在DC2:'DC2':1, 'DC3':1
  • 在DC3:'DC3':1

回答

2

你不能真正做到這一點與NetworkTopologyStrategy。根據您想要投入多少努力,您可以實施自己的複製策略。我不認爲這很常見,但是Cassandra確實允許它,並且實現你想要的可能不會太困難(以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 
}; 

,然後根據你的客戶,你將使用兩種密鑰空間的位置。