我是Cassandra的新手,我想进一步了解Cassandra的架子和结构。
假设我在Cassandra和两个AWS2实例中有大约70个列族。
使Cassandra了解逻辑机架和数据中心的目的是提供更高级别的容错能力。想法(在“网络拓扑策略”下为as described in this document)是,如果一个机架或数据中心变暗,则应用程序仍应能够运行。本质上,Cassandra ...
通过沿顺时针方向移动环将副本放置在同一数据中心中直到到达另一个机架中的第一个节点。网络拓扑策略尝试将副本放置在不同的机架上,因为相同的节点机架(或类似的物理分组)通常同时由于以下原因而失败电源,散热或网络问题。
这样,您还可以通过LOCAL_QUORUM查询数据,其中QUORUM((replication_factor / 2)+ 1)仅从与协调器节点位于同一数据中心的节点计算得出。这减少了数据中心间延迟的影响。
关于您的问题:
使用多少个数据中心完全取决于您。如果您只有两个AWS实例,则可以将它们放在不同的逻辑数据中心,但是只有在您计划使用一致性级别ONE时才有意义。顺带一提,如果一个实例发生故障,则您的应用程序只需要担心寻找另一个副本。但是即使这样,snitch也只能在一个实例或另一个实例上找到数据。
同样,您可以定义每个机架要拥有的节点数。但是,正如我在#1中指出的那样,如果您只有两个实例,那么将它们拆分到不同的数据中心或机架中并没有太多收获。
我不认为可以在多个键空间上划分列族。但是我想我知道你在做什么。每个键空间将在每个实例上创建。如果有2个实例,则可以指定1或2的复制因子。如果有3个实例,则可以将复制因子设置为2,然后如果丢失1个实例,则仍然可以访问所有实例。数据。由于您只有2个实例,因此您需要能够处理一个实例,因此,您需要确保两个实例的每一行都有副本(复制因子2)。
确实,随着集群中节点数量的增加,逻辑数据中心/机架结构变得更加有用。只有两个,通过附加的逻辑障碍将它们分割几乎得不到任何收益。有关更多信息,请通读我上面链接的两个文档: