如果Cassandra中的一个DC用完了物理内存,该怎么办?

时间:2018-09-30 13:00:16

标签: cassandra

我是cassandra的新手,我问自己,如果我有多个数据中心,并且某个数据中心将没有足够的物理内存来存储所有数据,那会发生什么。

假设我们有2个DC。第一个DC可以存储1 TB,第二个DC只能存储500 GB。此外,假设两个DC的复制因子均为1。据我了解,两个DC都将具有完整的令牌环,因此每个DC都将具有完整的数据。如果我将数据推送到DC 1并且所需的存储总量超过500 GB,现在会发生什么?

1 个答案:

答案 0 :(得分:3)

为简单起见,我将考虑使用DC1写入数据,因此在每种情况下,该数据都将是本地DC。处于关闭状态的DC2将一直处于远程状态。因此,真正重要的是您用来写的一致性级别

  1. LOCAL类型的一致性级别(LOCAL_QUORUM,ONE,LOCAL_ONE)-您可以写入数据。
  2. REMOTE类型的一致性级别(ALL,EACH_QUORUM,QUARUM,两个,三个)-您无法写入数据。

我建议阅读有关consistency levels的信息。

此外,使用ccm和cassandra-stress工具进行的快速测试可能有助于重现不同的情况。

关于您的可用空间的另一条评论:当节点达到250GB标记(一半为500GB)时,您将遇到压缩问题。建议将磁盘的一半留空以进行压缩。

但是,假设您将继续向该节点获取数据,并且将达到500GB的标记。 Cassandra将在该节点上停止。