根据文档编写一致性级别ALL表示:
写操作必须写入该分区的集群中所有复制节点的提交日志和memtable。
我有一个Cassandra集群,有3个节点,复制因子为3。
当3个节点中有2个关闭时,Cassandra写,一致性级别设置为ALL的地方不会失败(仍然成功)。
当涉及到读操作时,文档是清楚的:
返回所有副本响应后的记录。如果副本没有响应
,读取操作将失败。
当涉及到一致性写时,它会简单地尝试吗?写入所有副本节点,但如果失败,那么仍然OK(不返回异常)?
你在这里看到的,被称为提示切换。
通常,写操作被发送到单个节点(协调器),它确保所有副本都被写入,并在满足一致性设置时返回。如果不能写入副本,则将其存储在本地(在协调器上)。一旦down节点返回,提示就会重新播放,一致性就会恢复(理论上)。
请记住,提示默认只持续3小时。
所以在这种情况下,写操作会继续进行,但是读操作会抛出"没有足够的副本"。例外。