代码之家  ›  专栏  ›  技术社区  ›  innotech

跨集群的Cassandra不同复制因子

  •  1
  • innotech  · 技术社区  · 10 年前

    是否可以在同一群集的不同节点上使用不同的复制设置? (所有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 回复  |  直到 10 年前
        1
  •  2
  •   Andy Tolbert    10 年前

    你真的不能用 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
    };
    

    然后根据客户机的位置,您可以使用任意一个键空间。