所以我在前任管理员离开后接管我们的Cassandra集群,所以我正忙着尽可能多地学习它。我们正在浏览Datastax网站上的所有文档,因为我们正在使用他们的产品。
那就是说,在复制因素部分我很难理解为什么我不会将复制因子设置为我拥有的节点数。我目前有四个节点和一个数据中心,所有节点也位于相同的物理位置。
复制因子小于4会带来什么好处?
我只是认为,如果每个节点都有自己的数据副本/副本,从容错的角度来看是有益的,不知道为什么我想要的副本数量少于我拥有的节点数量。是否有性能权衡或其他原因?我完全错过了这个概念(完全有可能)吗?
答案 0 :(得分:2)
有几个原因可能导致您不希望将RF从3增加到4:
有效增加RF会使原始数据量倍增 按这个数额。根据您的数据量和数据密度而定 可能不想招致额外的存储空间。 RF>节点数将帮助您扩展超过一个节点的容量。
根据您的一致性级别,您可能会遇到性能损失。 I.E.当使用仲裁一致性级别(CL)写入RF 3时,在确认写入客户端之前等待2个节点返回。在RF为4时,您将等待3个节点返回。
无论CL如何,每次写入最终都会转到每个节点。这是群集上的更多活动,如果您的节点没有针对该工作负载进行扩展,则可能效果不佳。
你提到容错。 RF为4且读取CL一个,您可以同时吸收多达3个服务器同时关闭,您的应用程序仍然会启动。从容错的角度来看,这非常令人印象深刻,但也不太可能。我的猜测是,如果你在同一个直流中有3个节点同时关闭,第4个节点可能也会关闭(自然灾害,洪水,谁知道......)。
在一天结束时,这一切都取决于您的需求,如果不可配置,C *就不算什么。在Cassandra实现中,RF为3是非常常见的
答案 1 :(得分:2)
帖子中解释了您的RF通常小于群集中节点数的原因:Cassandra column family bigger than nodes drive space。这篇文章提供了对Cassandra复制这个有趣方面的见解。这是该帖子的摘要:
问题:。 ..每个节点都有2Tb驱动器空间,并且每个节点都复制了列系列,因此每个节点都包含它的完整副本。 。 。几年后,这个柱系列将超过2Tb。 。
答案:RF可以小于节点数,如果添加更多节点,则无需扩展。
例如,如果您今天有3个节点与RF 3,每个节点将 正如您所说,包含所有数据的副本。但是如果再添加3个 节点并保持RF为3,每个节点将有一半的数据。您可以 继续添加更多节点,以便每个节点包含越来越小的节点 比例的数据。 。 。原则上没有限制 你的数据有多大。