我是Cassandra的新手,我在问自己,如果我有多个数据中心,一个数据中心的物理内存不足以存储所有数据,会发生什么。假设我们有两个dcs。第一个dc可以存储1 tb,第二个dc只能存储500 gb。此外,假设两个dc的复制因子都为1。据我所知,这两个dc都有完整的令牌环,所以每个dc都有完整的数据。如果我将数据推送到DC1,而所需的存储总量超过500GB,现在会发生什么?
hc8w905p1#
为了简单起见,我将考虑使用dc1编写数据,因此这一个将是每个场景中的本地dc。关闭的dc2将一直处于远程状态。因此,这里真正重要的是您在编写时使用的一致性级别:类型local的一致性级别(local\u quorum,one,local\u one)-您可以写入数据。类型remote的一致性级别(all、each\u quorum、quorum、two、three)-无法写入数据。我建议你读一读关于一致性水平的书。此外,使用ccm和cassandra压力工具进行快速测试可能有助于再现不同的场景。另一个评论是关于您的可用空间:当一个节点将达到250gb标记(500gb的一半)时,您将有压缩问题。建议将磁盘的一半清空以运行压缩。但是,假设您将继续向该节点获取数据,并将达到500gb的标记。Cassandra会停在那个节点上。
1条答案
按热度按时间hc8w905p1#
为了简单起见,我将考虑使用dc1编写数据,因此这一个将是每个场景中的本地dc。关闭的dc2将一直处于远程状态。因此,这里真正重要的是您在编写时使用的一致性级别:
类型local的一致性级别(local\u quorum,one,local\u one)-您可以写入数据。
类型remote的一致性级别(all、each\u quorum、quorum、two、three)-无法写入数据。
我建议你读一读关于一致性水平的书。
此外,使用ccm和cassandra压力工具进行快速测试可能有助于再现不同的场景。
另一个评论是关于您的可用空间:当一个节点将达到250gb标记(500gb的一半)时,您将有压缩问题。建议将磁盘的一半清空以运行压缩。
但是,假设您将继续向该节点获取数据,并将达到500gb的标记。Cassandra会停在那个节点上。