Cassandra 跨集群的不同复制因子
Cassandra different replication factor across cluster
是否可以在同一集群的不同节点上进行不同的复制设置?
(所有 DC 都具有相同的 keyspace/tables,但复制设置不同)
我们想让 DC1 和 DC2 收集不同地理位置的传感器数据,并将这些数据发送到 DC3。所以 DC3 包含来自 DC1 + DC2 的所有数据。
但是,DC1 和 DC2 不应包含彼此的数据(只能包含本地客户端写入的数据)。
这可以通过在 DC 上设置不同的密钥空间复制设置在 Cassandra 中实现吗?
- 在 DC1 上:
'DC1':1, 'DC3':1
- 在 DC2 上:
'DC2':1, 'DC3':1
- 在 DC3 上:
'DC3':1
你不能用 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
};
然后根据您的客户端的位置,您将使用任一键空间。
是否可以在同一集群的不同节点上进行不同的复制设置? (所有 DC 都具有相同的 keyspace/tables,但复制设置不同)
我们想让 DC1 和 DC2 收集不同地理位置的传感器数据,并将这些数据发送到 DC3。所以 DC3 包含来自 DC1 + DC2 的所有数据。
但是,DC1 和 DC2 不应包含彼此的数据(只能包含本地客户端写入的数据)。
这可以通过在 DC 上设置不同的密钥空间复制设置在 Cassandra 中实现吗?
- 在 DC1 上:
'DC1':1, 'DC3':1
- 在 DC2 上:
'DC2':1, 'DC3':1
- 在 DC3 上:
'DC3':1
你不能用 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
};
然后根据您的客户端的位置,您将使用任一键空间。