卡桑德拉失去一个节点

The*_*uad 4 cluster-computing cassandra

我试图找出,如何参数我的2节点集群,以便有一个精确的副本,如果其中一个已关闭...使用此工具检查出来:http://www.ecyrd.com/cassandracalculator /

对于以下参数:

Cluster size: 2 / Replication Factor: 2 / Write Level: All / Read Level: One
Run Code Online (Sandbox Code Playgroud)

它给了我结果:

  • 你的阅读是一致的
  • 你可以在没有节点的情况下幸免于难.
  • 每次都是从1个节点读书.
  • 每次都在写2个节点.
  • 每个节点都保存100%的数据.

我同意所有这些结果,除了一个,"你可以幸免于没有节点的损失".我不明白为什么集群无法从一个节点丢失中存活,如果一个节点死亡,"Write:ALL"将写入剩下的唯一一个节点,不是吗?然后,当我重新启动第二个节点时,它应该与第一个节点同步,并再次接受写入,不是吗?

如果我错了,有人可以向我解释原因吗?

编辑:

除了持有%之外,更多配置将给出相同的结果:

Cluster size: 3 / Replication Factor: 2 / Write Level: All / Read Level: One
Cluster size: 3 / Replication Factor: 2 / Write Level: Quorum / Read Level: One
Run Code Online (Sandbox Code Playgroud)

即使我试图与Reads保持一致,而不是写入:

Cluster size: 2 / Replication Factor: 2 / Write Level: One / Read Level: Quorum
Run Code Online (Sandbox Code Playgroud)

每次它告诉我,我不能在任何节点上遭受损失.

Yas*_*een 5

那是因为复制因素

当复制因子超过节点数时,将拒绝写入,但只要满足所需的一致性级别,就会提供读取.

资料来源:http://www.datastax.com/docs/1.0/cluster_architecture/replication