是否可以在同一群集的不同节点上进行不同的复制设置? (所有DC具有相同的键空间/表,但具有不同的复制设置)
我们希望DC1和DC2在不同的地理位置收集传感器数据,并将这些数据发送到DC3。因此DC3包含来自DC1 + DC2的所有数据。
但是,DC1和DC2不应包含彼此的数据(仅限本地客户编写的数据)。
这可以通过在DC上使用不同的密钥空间复制设置在Cassandra中实现吗?
'DC1':1, 'DC3':1
'DC2':1, 'DC3':1
'DC3':1
答案 0 :(得分:2)
你无法用NetworkTopologyStrategy
真正做到这一点。根据您想要投入多少精力,您可以实施自己的复制策略。我不认为这很常见,但Cassandra确实允许它,实现你想要的东西可能不会太难(以NTS's implementation为例)。
如果您不想实施自己的策略,我建议您使用以下配置创建2个键空间:
CREATE KEYSPACE keyspace1
WITH replication = {
'class' : 'NetworkTopologyStrategy',
'DC1' : 1,
'DC3' : 1
};
CREATE KEYSPACE keyspace2
WITH replication = {
'class' : 'NetworkTopologyStrategy',
'DC2' : 1,
'DC3' : 1
};
然后根据您的客户端的位置,您将使用任一键空间。