8

我是 Cassandra 的新手,我想了解更多关于 Cassandra 的机架和结构的信息。

假设我在 Cassandra 中有大约 70 个列族和两个 AWS2 实例。

  1. 将使用多少个数据中心?
  2. 每个机架有多少个节点?
  3. 是否可以将列族划分为多个键空间?
4

1 回答 1

10

让 Cassandra 了解逻辑机架和数据中心的目的是提供更高级别的容错能力。这个想法(如本文档中所述,在“网络拓扑策略”下)是,如果一个机架或数据中心变暗,应用程序应该仍然能够运行。本质上,卡桑德拉...

通过顺时针走环直到到达另一个机架中的第一个节点,将副本放置在同一个数据中心。NetworkTopologyStrategy 尝试将副本放置在不同的机架上,因为同一机架(或类似的物理分组)中的节点经常由于电源、冷却或网络问题而同时失败。

这样,您还可以通过 LOCAL_QUORUM 查询您的数据,其中 QUORUM ((replication_factor / 2) + 1) 仅从与协调节点位于同一数据中心的节点计算。这减少了数据中心间延迟的影响。

至于你的问题:

  1. 使用多少个数据中心完全取决于您。如果您只有两个 AWS 实例,则可以将它们放在不同的逻辑数据中心,但只有在您计划使用一致性级别 ONE 时才有意义。例如,如果一个实例出现故障,您的应用程序只需要担心找到另一个副本。但即便如此,告密者也只能找到一个实例的数据,或者另一个。

  2. 同样,您可以为每个机架定义您希望拥有的节点数。但正如我在 #1 中指出的那样,如果您只有两个实例,那么将它们拆分到不同的数据中心或机架中并没有什么好处。

  3. 我不相信可以将列族划分为多个键空间。但我想我知道你在说什么。将在每个实例上创建每个键空间。由于您有 2 个实例,您将能够指定 1 或 2 的复制因子。如果您有 3 个实例,您可以将复制因子设置为 2,然后如果您丢失 1 个实例,您仍然可以访问所有数据。由于您只有 2 个实例,因此您需要能够处理一个变暗的情况,因此您需要确保两个实例都有每一行的副本(复制因子为 2)。

实际上,随着集群中节点数量的增加,逻辑数据中心/机架结构变得更加有用。只有两个,用额外的逻辑障碍将它们分开几乎没有什么好处。有关更多信息,请阅读我上面链接的两个文档:

Apache Cassandra 2.0:数据复制

Apache Cassandra 2.0:告密者

于 2014-03-10T14:10:32.710 回答