首页 文章

Cassandra跨群集的不同复制因子

提问于
浏览
1

是否可以在同一群集的不同节点上具有不同的复制设置? (所有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 回答

  • 2

    你无法用 NetworkTopologyStrategy 真正做到这一点 . 根据您想要投入多少精力,您可以实施自己的复制策略 . 我不太难以实现你想要的东西(以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
    };
    

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

相关问题