是否可以在同一群集的不同节点上使用不同的复制设置? (所有DC具有相同的密钥空间/表,但复制设置不同)
我们希望DC1和DC2收集不同地理位置的传感器数据,并将其发送到DC3。因此,DC3包含DC1+DC2的所有数据。
但是,DC1和DC2不应包含彼此的数据(只有本地客户端写入的数据)。
通过在DC上设置不同的密钥空间复制设置,可以在Cassandra中实现这一点吗?
'DC1':1, 'DC3':1
'DC2':1, 'DC3':1
'DC3':1
你真的不能用 NetworkTopologyStrategy 。根据您要为此付出的努力,您可以实施自己的复制策略。我不认为这是很常见的,但卡桑德拉确实允许这样做,实现你想要的可能不会太困难(看看 NTS's implementation 作为示例)。
NetworkTopologyStrategy
如果您不想实施自己的策略,我建议使用以下配置创建2个密钥空间:
CREATE KEYSPACE keyspace1 WITH replication = { 'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC3' : 1 }; CREATE KEYSPACE keyspace2 WITH replication = { 'class' : 'NetworkTopologyStrategy', 'DC2' : 1, 'DC3' : 1 };
然后根据客户机的位置,您可以使用任意一个键空间。