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

Cassandra机架概念和数据库结构

  •  9
  • user2348014  · 技术社区  · 10 年前

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

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

    1. 将使用多少个数据中心?
    2. 每个机架将有多少个节点?
    3. 是否可以在多个键空间中划分列族?
    1 回复  |  直到 4 年前
        1
  •  10
  •   Aaron    10 年前

    让Cassandra了解逻辑机架和数据中心的目的是提供额外的容错级别。这个想法( as described in this document ,根据“网络拓扑策略”),如果一个机架或数据中心变暗,应用程序仍应能够运行。本质上,卡桑德拉。。。

    通过顺时针移动环将副本放置在同一数据中心 直到到达另一机架中的第一节点。网络拓扑策略 尝试将副本放置在不同的机架上,因为同一机架中的节点 由于以下原因,机架(或类似的物理分组)经常同时发生故障 电源、冷却或网络问题。

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

    至于您的问题:

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

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

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

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

    Apache Cassandra 2.0: Data Replication

    Apache Cassandra 2.0: Snitches