Cassandra跨群集的不同复制因子

时间:2015-08-14 06:23:00

标签: cassandra replication

是否可以在同一群集的不同节点上进行不同的复制设置? (所有DC具有相同的键空间/表,但具有不同的复制设置)

我们希望DC1和DC2在不同的地理位置收集传感器数据,并将这些数据发送到DC3。因此DC3包含来自DC1 + DC2的所有数据。

但是,DC1和DC2不应包含彼此的数据(仅限本地客户编写的数据)。

这可以通过在DC上使用不同的密钥空间复制设置在Cassandra中实现吗?

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

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
};

然后根据您的客户端的位置,您将使用任一键空间。