【问题标题】:Creating Cassandra sub-clusters创建 Cassandra 子集群
【发布时间】:2018-10-30 16:05:02
【问题描述】:

我需要在 N 台机器 (K>>N) 上创建 K 个重叠的 Cassandra 集群。每个集群可以有 1 到 N 个节点。我知道这样做的一种方法是为节点所属的每个集群创建一个单独的进程(或 docker 容器)。

但是我的问题是我可以更改 Cassandra 以允许创建子集群吗?这意味着每个节点上只会运行 1 个 Cassandra 实例,但我将能够控制数据复制和数据放置,例如,在子集群中,我将能够进行 Quorum 写入。

【问题讨论】:

  • 您能更详细地描述您的用例吗?一个解决方案可能是使用数据中心,但我不确定我是否正确理解了您的问题。
  • 所以我需要根据用例进行复制,因此对于特定的键空间或行,我想在某些服务器上进行复制(基于地理位置)。对于其他行,我想做点别的事情
  • 例如,我可以在服务器 a-b-c 上执行仲裁写入一行(我假设的子集群是:a-b-c-x-y),而另一行在服务器 b-d-e 上执行仲裁写入(子集群是 b-d-e-p-q)?

标签: cassandra cql cassandra-3.0


【解决方案1】:

不,不可能像您描述的那样定义子集群 - 每个进程始终有一个 Cassandra 集群。

但 Cassandra 有一个 Datacenter 的概念,它定义了机器所在的位置,以及定义数据如何在数据中心和节点之间复制的键空间。而一致性级别,如QUORUM,取决于键空间配置。

在您的情况下,我会朝那个方向思考 - 定义数据中心,创建必要的键空间,并为该键空间设置正确的复制因子。

【讨论】:

  • 使用数据中心,我可以在某个服务器上复制一行,而对于另一行,将其复制到其他地方吗?例如,我可以在服务器 a-b-c 上执行仲裁写入一行(我假设的子集群是:a-b-c-x-y),而对于另一行在服务器 b-d-e 上执行仲裁写入(子集群是 b-d-e-p-q)?
  • 如果不是,您认为我必须修改 Cassandra 的哪些部分才能获得预期的结果?
  • 如果这个数据在同一个表里,那是不可能的……但是如果它在不同的键空间中,那么如果你正确定义了DC,那么它是可能的……
  • 关于修改,我觉得改动太大了。我建议在 cassandra-user 邮件列表中询问
  • 请问您为什么需要这个?
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 2018-08-09
  • 2015-10-13
  • 2015-05-22
  • 2022-10-24
  • 2015-09-29
相关资源
最近更新 更多