卡桑德拉:理解复制因素

假设情况:

  1. 用N个节点设置一个cassandra集群。
  2. 创build一个密钥空间并将replication_factor设置为1并使用SimpleStrategy
  3. 添加一些数据。
  4. 删除1个节点。

这是否意味着1 / N的数据现在丢失?

对于阅读请求,是的,这就是它的意思。 通常情况下,复制因子1是您不需要的cassandra(除非您有单个节点)。

更高的复制因素会给你更好的恢复能力,但决定行可用性的主要参数实际上是一致性级别(这是特定于查询的)。

对于写入请求,任何一致性级别都会使该簇的types成为请求的种类,即使该行所选的目标不存在(因为它将尝试使用提示的转交来稍后提交写入)。

您没有告诉我们如何删除节点,如果使用nodetool命令,那么节点上的数据将在删除之前发送到其他节点。 所以你会保存你的数据。

请参阅http://wiki.apache.org/cassandra/Operations#Removing_nodes_entirely

如果你的节点崩溃了:

  • 对于读取请求,您的数据将丢失
  • 对于写请求:
    • 对于像networking故障这样的短小问题,您的群集(每个请求的协调者)将处理该节点的数据,直到它重新出现,使用HintedHandofffunction
    • 对于更长或永久的问题,您需要重新组织您的群集,以确保1 / N以正确的方式,请参阅http://wiki.apache.org/cassandra/Operations#For_versions_1.2.0_and_above