在某些特殊情况下的Cassandra一致性级别

问题描述 投票:0回答:1

考虑一个由4个节点组成的集群。

复制因子已设置为3。

我们给出了一个将一致性级别设置为ALL的写查询,但是只有一个副本成功写入了数据,而另两个副本从未响应。

在这种情况下,Cassandra响应UnavailableException(我已经在某处阅读了此内容),因此我们认为我们的请求未能持久。

然后,我们对一致性级别设置为1的同一row_key进行了读取查询,协调器将此请求发送到已成功写入先前请求的同一节点。

我的问题是接下来会发生什么?此读取查询是否返回值?如果是这样的话,这种行为真的有意义吗,因为我们首先抛出了UnavailableException?

cassandra nosql cql eventual-consistency
1个回答
0
投票

如果Cassandra回答UnavailableException,数据仍将写入可用节点,并且协调器将为不可用节点写入本地提示,节点返回后将重播该提示。即使节点没有退回,并且您正在使用ONELOCAL_ONE进行读取,也可以取回数据。这就是所谓的最终一致性-数据最终将传播到所有副本...

您可以在DataStax Architecture Guide中找到有关Cassandra如何以一致级别写入和读取数据的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.